mirror of
https://github.com/nubenetes/awesome-kubernetes.git
synced 2026-07-13 18:30:44 +00:00
8924 lines
194 KiB
HTML
8924 lines
194 KiB
HTML
|
||
<!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@gmail.com">
|
||
|
||
|
||
<link rel="canonical" href="https://nubenetes.com/crunchydata.html">
|
||
|
||
|
||
<link rel="prev" href="databases.html">
|
||
|
||
|
||
<link rel="next" href="nosql.html">
|
||
|
||
|
||
|
||
|
||
|
||
<link rel="icon" href="images/favicon-car.png">
|
||
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.6">
|
||
|
||
|
||
|
||
<title>Crunchy Data PostgreSQL Operator - Nubenetes</title>
|
||
|
||
|
||
|
||
<link rel="stylesheet" href="assets/stylesheets/main.484c7ddc.min.css">
|
||
|
||
|
||
<link rel="stylesheet" href="assets/stylesheets/palette.ab4e12ef.min.css">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
||
<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="#crunchy-data-postgresql-operator" 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">
|
||
|
||
Crunchy Data PostgreSQL Operator
|
||
|
||
</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)
|
||
|
||
</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">
|
||
<a href="ansible.html" class="md-tabs__link">
|
||
|
||
|
||
|
||
|
||
|
||
Config Mgmt
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-tabs__item md-tabs__item--active">
|
||
<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="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)
|
||
|
||
|
||
|
||
</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--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Intro
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_3">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
Intro
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="introduction.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Microservice Architecture. From Java EE To Cloud Native. Openshift VS Kubernetes
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="faq.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Microservices FAQ & Kubernetes Native
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
SRE
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
SRE
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="sre.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
SRE Site Reliability Engineering
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="networking.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Networking
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="finops.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
FinOps. Cloud Financial Management
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="chaos-engineering.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Chaos Engineering
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
DevOps
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_5">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
DevOps
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="devops.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
DevOps
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="gitops.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
GitOps
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="mlops.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
MLOps
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="cheatsheets.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Cheat Sheets
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
DevSecOps
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_6">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
DevSecOps
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="devsecops.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
DevSecOps. Container Security
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="securityascode.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Security Policy as Code
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="oauth.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
OAuth2
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
NoOps
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_7">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
NoOps
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="noops.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
NoOps
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="serverless.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Serverless Architectures & Frameworks. OpenFaaS, Knative & Kubeless
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</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--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
K8s
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_9">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
K8s
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="kubernetes.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Kubernetes
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="kubernetes-tutorials.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Kubernetes Tutorials
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="kubernetes-tools.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Kubernetes Plugins, Tools, Extensions and Projects
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="kubectl-commands.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
kubectl Commands
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="kubernetes-networking.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Kubernetes Networking
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="kubernetes-monitoring.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Kubernetes Monitoring and Logging
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="kubernetes-security.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Kubernetes Security
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="kubernetes-storage.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Kubernetes Storage
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="kubernetes-backup-migrations.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Kubernetes Backup and Migrations
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="kubernetes-autoscaling.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Kubernetes Autoscaling
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="kubernetes-operators-controllers.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Kubernetes Operators and Controllers
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="kubernetes-based-devel.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Kubernetes Based Development
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="kubernetes-on-premise.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Kubernetes On Premise
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="managed-kubernetes-in-public-cloud.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Managed kubernetes in public clouds
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="kubernetes-troubleshooting.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Kubernetes Troubleshooting
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="kubernetes-releases.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Kubernetes Releases
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="kubernetes-newsletters.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Kubernetes Newsletters
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="matrix-table.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Kubernetes Distributions & Installers
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="kubernetes-bigdata.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Kubernetes Big Data
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="kubernetes-alternatives.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Kubernetes alternatives
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_10" id="__nav_10_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
OpenShift
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_10">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
OpenShift
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="openshift.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
OpenShift docs
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="ocp3.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
OCP 3
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="ocp4.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
OCP 4
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_11" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_11" id="__nav_11_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Rancher
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_11_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_11">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
Rancher
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="rancher.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Rancher - Enterprise management for Kubernetes
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_12" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_12" id="__nav_12_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
CI/CD
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_12_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_12">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
CI/CD
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="cicd.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
CI/CD - Continuous Integration & Continuous Delivery
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="git.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Git & Git Patterns. Trunk Devel, Git Flow & Feature Flags. Merge BOTs
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="jenkins.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Jenkins & Cloudbees
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="performance-testing-with-jenkins-and-jmeter.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Performance testing with Jenkins, JMeter, Gatling, Azure Load Testing, etc
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="openshift-pipelines.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
OpenShift Pipelines with Jenkins, Tekton and more...
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="performance-testing-with-jenkins-and-jmeter.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Performance testing with Jenkins, JMeter, Gatling, Azure Load Testing, etc
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_12_7" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_12_7" id="__nav_12_7_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
DevOps Tools aka Toolchain. Jenkins Alternatives. Cloud Native CI/CD Tools
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_12_7_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_12_7">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
DevOps Tools aka Toolchain. Jenkins Alternatives. Cloud Native CI/CD Tools
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="devops-tools.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
DevOps Tools
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="jenkins-alternatives.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Jenkins Alternatives for Continuous Integration & Deployment
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="argo.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Argo - Declarative GitOps for Kubernetes
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="flux.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Flux CD - The GitOps Operator for Kubernetes
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="tekton.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Tekton - Cloud Native CI/CD
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="keptn.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Keptn
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="container-managers.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Container Runtimes/Managers & Base Images. Podman, Buildah & Skopeo
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="maven-gradle.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Maven, Gradle & SDKMAN
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="sonarqube.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
SonarQube
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="registries.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Docker Registries. Quay, Nexus, JFrog Artifactory, Harbor and more
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="linux.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Linux & SSH
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="mkdocs.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
MkDocs & GitHub Pages
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_12_8" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_12_8" id="__nav_12_8_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Web Servers, Reverse Proxies, Java Runtimes & Caching Solutions
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_12_8_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_12_8">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
Web Servers, Reverse Proxies, Java Runtimes & Caching Solutions
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="web-servers.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Web Servers & Reverse Proxies - Apache, Nginx, HAProxy, Traefik and more
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="java_app_servers.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Java EE/Jakarta EE and MicroProfile Runtimes - Payara, JBoss EAP, WebSphere Liberty, WildFly and more
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="embedded-servlet-containers.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Embedded Servlet Containers in SpringBoot
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="caching.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Caching Solutions
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_13" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_13" id="__nav_13_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Montrg
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_13_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_13">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
Montrg
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="monitoring.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Monitoring and Performance
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="prometheus.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Prometheus
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="grafana.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Grafana
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_14" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_14" id="__nav_14_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Infra Prov
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_14_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_14">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
Infra Prov
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="iac.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
IaC Infrastructure as Code
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="terraform.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Terraform & Packer.Kubernetes Boilerplates
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="pulumi.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Pulumi
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="crossplane.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Crossplane
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="cloud-arch-diagrams.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Cloud Architecture Diagram Tools
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="cloud-asset-inventory.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Cloud Asset Inventory
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_15" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_15" id="__nav_15_label" tabindex="0">
|
||
|
||
|
||
|
||
<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="false">
|
||
<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">
|
||
<a href="yaml.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
YAML and JSON
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</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_16" checked>
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_16" id="__nav_16_label" tabindex="">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
DB
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_16_label" aria-expanded="true">
|
||
<label class="md-nav__title" for="__nav_16">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
DB
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="databases.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Relational Databases and Database DevOps
|
||
|
||
|
||
|
||
</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">
|
||
|
||
|
||
Crunchy Data PostgreSQL Operator
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<a href="crunchydata.html" class="md-nav__link md-nav__link--active">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Crunchy Data PostgreSQL Operator
|
||
|
||
|
||
|
||
</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" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
|
||
Introduction
|
||
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#crunchy-data-developer-portal" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
|
||
Crunchy Data Developer Portal
|
||
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#crunchy-data-postgres-operator-in-openshift-4-overview-proof-of-concept" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
|
||
Crunchy Data Postgres Operator in OpenShift 4. Overview & Proof of Concept
|
||
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Crunchy Data Postgres Operator in OpenShift 4. Overview & Proof of Concept">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#crunchydata-postgres-operator-35" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
|
||
Crunchydata Postgres Operator 3.5
|
||
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#crunchydata-postgres-operator-401" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
|
||
Crunchydata Postgres Operator 4.0.1
|
||
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#crunchydata-postgres-operator-401-community-edition" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
|
||
Crunchydata Postgres Operator 4.0.1 Community Edition
|
||
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Crunchydata Postgres Operator 4.0.1 Community Edition">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#service-accounts" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
|
||
Service Accounts
|
||
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#roles-assigned-to-service-accounts" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
|
||
Roles assigned to Service Accounts
|
||
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#security-context-constraints-scc" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
|
||
Security Context Constraints (SCC)
|
||
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Security Context Constraints (SCC)">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#scc-recommendations" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
|
||
SCC Recommendations
|
||
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#add-a-scc-to-a-project" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
|
||
Add a SCC to a Project
|
||
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Add a SCC to a Project">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#workflow1-without-custom-service-account-and-without-deploymentconfig" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
|
||
Workflow1 without custom Service Account and without DeploymentConfig
|
||
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#workflow2-with-custom-service-account-and-without-deploymentconfig" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
|
||
Workflow2 with custom Service Account and without DeploymentConfig
|
||
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#workflow3-with-custom-service-account-and-deploymentconfig" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
|
||
Workflow3 with custom service Account and DeploymentConfig
|
||
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#environment-setup-port-forward-and-wsl" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
|
||
Environment setup. Port Forward and WSL
|
||
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#cluster-deployment-and-operation-with-pgo" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
|
||
Cluster Deployment and Operation with pgo
|
||
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#psql-access-from-postgres-operator-pod" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
|
||
Psql access from postgres operator POD
|
||
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#list-databases-with-psql" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
|
||
List Databases with psql
|
||
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#access-from-another-pod-within-the-cluster-with-psql-client" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
|
||
Access from another POD within the cluster with psql client
|
||
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#access-from-another-pod-within-the-cluster-with-pgadmin4-of-crunchy-containers-community-edition" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
|
||
Access from another POD within the cluster with Pgadmin4 of Crunchy containers Community Edition
|
||
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#debugging-crunchydata-postgres-operator-401-community-edition" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
|
||
Debugging Crunchydata Postgres Operator 4.0.1 Community Edition
|
||
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#certified-crunchydata-postgres-operator-olmoperatorhub-manual-setup" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
|
||
Certified Crunchydata Postgres Operator (OLM/OperatorHub). Manual Setup
|
||
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="nosql.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
NoSQL Databases
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</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--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_18" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_18" id="__nav_18_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Service Mesh
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_18_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_18">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
Service Mesh
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="servicemesh.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Service Mesh
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="istio.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Istio
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_19" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_19" id="__nav_19_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Demos
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_19_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_19">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
Demos
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="demos.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Demos, Boilerplates & Screencasts
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_20" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_20" id="__nav_20_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Cloud
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_20_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_20">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
Cloud
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="public-cloud-solutions.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Public Cloud Solutions
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="private-cloud-solutions.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Private Cloud Solutions
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="edge-computing.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Edge Computing
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_20_4" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_20_4" id="__nav_20_4_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
AWS Cloud
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_20_4_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_20_4">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
AWS Cloud
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="aws.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
AWS
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="aws-miscellaneous.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
AWS Miscellaneous
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="aws-architecture.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
AWS Architecture and Best Practices
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="aws-networking.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
AWS Networking
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="aws-databases.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
AWS Databases
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="aws-storage.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
AWS Storage
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="aws-security.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
AWS Security
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="aws-monitoring.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
AWS Monitoring
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="aws-iac.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
AWS IaC
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="aws-tools-scripts.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
AWS Tools Scripts
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="aws-messaging.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
AWS Messaging
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="aws-data.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
AWS Data
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="aws-devops.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
AWS DevOps
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="aws-serverless.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
AWS Serverless
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="aws-pricing.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
AWS Pricing
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="aws-containers.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
AWS Containers
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="aws-backup.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
AWS Backup and Migrations
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="aws-training.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
AWS Training and Certification
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="aws-newfeatures.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
AWS New Features
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="aws-spain.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
AWS Spain
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="azure.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Microsoft Azure
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="GoogleCloudPlatform.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Google Cloud Platform
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="ibm_cloud.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
IBM & IBM Cloud
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="oraclecloud.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Oracle Cloud
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="digitalocean.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Digital Ocean
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="cloudflare.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Cloudflare
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="scaleway.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Scaleway
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_21" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_21" id="__nav_21_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
APIs
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_21_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_21">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
APIs
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="api.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
APIs with SOAP, REST and gRPC
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="swagger-code-generator-for-rest-apis.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Swagger code generator for REST APIs
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="postman.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
API Test Automation with Postman and REST Assured
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="developerportals.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
API Marketplaces. API Management with API Gateways & Developer Portals
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_22" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_22" id="__nav_22_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Dev
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_22_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_22">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
Dev
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="devel-sites.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Websites for web developers
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="angular.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Angular
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="dom.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Document Object Model (DOM)
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="golang.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Golang
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="javascript.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
JavaScript - node.js & npm
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="python.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Python - Django & Flask
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="react.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
React
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="lowcode-nocode.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Low Code and No Code
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="web3.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Web 3
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_22_10" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_22_10" id="__nav_22_10_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Microsoft
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_22_10_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_22_10">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
Microsoft
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="dotnet.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Microsoft .NET
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="xamarin.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Microsoft Xamarin
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_22_11" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_22_11" id="__nav_22_11_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Java
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_22_11_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_22_11">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
Java
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="java_frameworks.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Java & Open Source Microservices Frameworks. SpringBoot, MicroProfile, Quarkus and more
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="java-and-java-performance-optimization.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Java Memory Management & Java Performance Optimization
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="jvm-parameters-matrix-table.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Java Parameters Matrix Table
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_22_12" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_22_12" id="__nav_22_12_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Dev Environment
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_22_12_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_22_12">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
Dev Environment
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="visual-studio.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Visual Studio Code
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="linux-dev-env.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
WSL - Linux Dev Environment on Windows
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="scaffolding.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Scaffolding Tools
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="ChromeDevTools.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Chrome & Firefox DevTools. HTTP Protocols & WebSockets
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_23" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_23" id="__nav_23_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
QA
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_23_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_23">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
QA
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="qa.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
QA
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="testops.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
TestOps and Continuous Testing
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="test-automation-frameworks.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Test Automation Frameworks and BDD
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_24" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_24" id="__nav_24_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
AI
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_24_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_24">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
AI
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="ai.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
AI
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="ai-agents-mcp.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Model Context Protocol (MCP) & AI Agents
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="mlops.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
MLOps
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="chatgpt.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
ChatGPT
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_25" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_25" id="__nav_25_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Project Mgmt
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_25_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_25">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
Project Mgmt
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="project-management-methodology.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Project Management Methodology
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="project-management-tools.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Project Management Tools
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="appointment-scheduling.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Appointment Scheduling
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="workfromhome.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Work From Home
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_26" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_26" id="__nav_26_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Refs+
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_26_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_26">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
Refs+
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="other-awesome-lists.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Other Awesome Lists
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="interview-questions.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Interview Questions
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="newsfeeds.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Subreddits
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="elearning.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
E-Learning
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="digital-money.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Digital Money
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_27" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_27" id="__nav_27_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Hiring
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_27_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_27">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
|
||
Hiring
|
||
|
||
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="recruitment.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Recruitment
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="hr.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Human Resources
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="freelancing.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Freelancing
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="remote-tech-jobs.html" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
|
||
|
||
Remote Tech Jobs
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</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="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="crunchy-data-postgresql-operator">Crunchy Data PostgreSQL Operator</h1>
|
||
<ol>
|
||
<li><a href="#introduction">Introduction</a></li>
|
||
<li><a href="#crunchy-data-developer-portal">Crunchy Data Developer Portal</a></li>
|
||
<li><a href="#crunchy-data-postgres-operator-in-openshift-4-overview--proof-of-concept">Crunchy Data Postgres Operator in OpenShift 4. Overview & Proof of Concept</a><ol>
|
||
<li><a href="#crunchydata-postgres-operator-35">Crunchydata Postgres Operator 3.5</a></li>
|
||
<li><a href="#crunchydata-postgres-operator-401">Crunchydata Postgres Operator 4.0.1</a></li>
|
||
<li><a href="#crunchydata-postgres-operator-401-community-edition">Crunchydata Postgres Operator 4.0.1 Community Edition</a><ol>
|
||
<li><a href="#service-accounts">Service Accounts</a></li>
|
||
<li><a href="#roles-assigned-to-service-accounts">Roles assigned to Service Accounts</a></li>
|
||
<li><a href="#security-context-constraints-scc">Security Context Constraints (SCC)</a><ol>
|
||
<li><a href="#scc-recommendations">SCC Recommendations</a></li>
|
||
</ol>
|
||
</li>
|
||
<li><a href="#add-a-scc-to-a-project">Add a SCC to a Project</a><ol>
|
||
<li><a href="#workflow1-without-custom-service-account-and-without-deploymentconfig">Workflow1 without custom Service Account and without DeploymentConfig</a></li>
|
||
<li><a href="#workflow2-with-custom-service-account-and-without-deploymentconfig">Workflow2 with custom Service Account and without DeploymentConfig</a></li>
|
||
<li><a href="#workflow3-with-custom-service-account-and-deploymentconfig">Workflow3 with custom service Account and DeploymentConfig</a></li>
|
||
</ol>
|
||
</li>
|
||
<li><a href="#environment-setup-port-forward-and-wsl">Environment setup. Port Forward and WSL</a></li>
|
||
<li><a href="#cluster-deployment-and-operation-with-pgo">Cluster Deployment and Operation with pgo</a></li>
|
||
<li><a href="#psql-access-from-postgres-operator-pod">Psql access from postgres operator POD</a></li>
|
||
<li><a href="#list-databases-with-psql">List Databases with psql</a></li>
|
||
<li><a href="#access-from-another-pod-within-the-cluster-with-psql-client">Access from another POD within the cluster with psql client</a></li>
|
||
<li><a href="#access-from-another-pod-within-the-cluster-with-pgadmin4-of-crunchy-containers-community-edition">Access from another POD within the cluster with Pgadmin4 of Crunchy containers Community Edition</a></li>
|
||
<li><a href="#debugging-crunchydata-postgres-operator-401-community-edition">Debugging Crunchydata Postgres Operator 4.0.1 Community Edition</a></li>
|
||
</ol>
|
||
</li>
|
||
<li><a href="#certified-crunchydata-postgres-operator-olmoperatorhub-manual-setup">Certified Crunchydata Postgres Operator (OLM/OperatorHub). Manual Setup</a></li>
|
||
</ol>
|
||
</li>
|
||
</ol>
|
||
<h2 id="introduction">Introduction</h2>
|
||
<ul>
|
||
<li><a href="https://www.crunchydata.com/">crunchydata.com</a></li>
|
||
<li><a href="https://learn.crunchydata.com/">learn.crunchydata.com 🌟</a></li>
|
||
<li><a href="https://github.com/CrunchyData">github.com/CrunchyData</a></li>
|
||
<li><a href="https://github.com/CrunchyData/postgres-operator">github.com/CrunchyData/postgres-operator</a></li>
|
||
<li><a href="https://access.crunchydata.com/documentation/crunchy-postgres-containers/latest/">Documentation: Crunchy Data Container Suite 🌟</a></li>
|
||
<li><a href="https://info.crunchydata.com/blog/active-active-on-kubernetes">crunchydata blog: Deploying Active-Active PostgreSQL on Kubernetes</a></li>
|
||
<li><a href="https://info.crunchydata.com/blog/crunchy-postgres-kubernetes-operator-4.0">crunchydata blog: What’s New in Crunchy PostgreSQL Operator 4.0</a></li>
|
||
<li><a href="https://www.slideshare.net/vyruss000/deploying-postgresql-on-kubernetes">slideshare.net: Deploying PostgreSQL on Kubernetes</a></li>
|
||
<li><a href="https://www.slideshare.net/jkatz05/operating-postgresql-at-scale-with-kubernetes-137132067">slideshare.net: Operating PostgreSQL at Scale with Kubernetes</a></li>
|
||
<li><a href="https://www.youtube.com/watch?v=HX10WWTRiTY">Youtube: Demo of Crunchy Data Postgres Operator v1.0.0 (2017)</a></li>
|
||
<li><a href="https://www.youtube.com/watch?v=gaXlrlz7GVc">Youtube: Crunchy PostgreSQL Operator for Kubernetes 3.4 Overview (2018)</a></li>
|
||
<li><a href="https://www.youtube.com/watch?v=X4vuktlK0Tg">Youtube: OpenShift Meetup Tokyo #05 - Operator and Operator Lifecycle Manager on OpenShift (2019, openshift 4.1)</a></li>
|
||
<li><a href="https://info.crunchydata.com/blog/monitoring-postgresql-clusters-in-kubernetes">info.crunchydata.com: Monitoring PostgreSQL clusters in kubernetes</a></li>
|
||
<li><a href="https://info.crunchydata.com/blog/deploy-high-availability-postgresql-on-kubernetes">info.crunchydata.com: Deploy High-Availability PostgreSQL Clusters on Kubernetes by Example</a></li>
|
||
<li><a href="https://info.crunchydata.com/blog/migrating-from-oracle-to-postgresql-questions-and-considerations">info.crunchydata.com: Migrating from Oracle to PostgreSQL: Tips and Tricks</a></li>
|
||
<li><a href="https://info.crunchydata.com/blog/schedule-postgresql-backups-and-retention-with-kubernetes">info.crunchydata.com: Scheduled PostgreSQL Backups and Retention Policies with Kubernetes</a></li>
|
||
<li><a href="https://info.crunchydata.com/blog/synchronous-replication-in-the-postgresql-operator-for-kubernetes-guarding-against-transactions-loss">info.crunchydata.com: Guard Against Transaction Loss with PostgreSQL Synchronous Replication</a></li>
|
||
<li><a href="https://info.crunchydata.com/news/crunchy-postgresql-for-kuberenetes-4.3">info.crunchydata.com: Crunchy PostgreSQL for Kubernetes 4.3 Released</a> Crunchy #PostgreSQL for #Kubernetes 4.3 released! Now supports multi-Kubernetes deployments, easier customization + installation, TLS, pgAdmin 4, improved pgBouncer support, and much more!</li>
|
||
<li><a href="https://info.crunchydata.com/blog/deploy-pgadmin4-with-postgresql-on-kubernetes">info.crunchydata.com: Deploy pgAdmin4 with PostgreSQL on Kubernetes</a></li>
|
||
<li><a href="https://info.crunchydata.com/blog/multi-kubernetes-cluster-postgresql-deployments">info.crunchydata.com: Multi-Kubernetes Cluster PostgreSQL Deployments</a></li>
|
||
<li><a href="https://info.crunchydata.com/blog/d-meta">info.crunchydata.com: Quickly Document Your Postgres Database Using psql Meta-Commands</a></li>
|
||
<li><a href="https://info.crunchydata.com/blog/fast-csv-and-json-ingestion-in-postgresql-with-copy">info.crunchydata.com: Fast CSV and JSON Ingestion in PostgreSQL with COPY</a></li>
|
||
<li><a href="https://info.crunchydata.com/blog/composite-primary-keys-postgresql-and-django">info.crunchydata.com: Composite Primary Keys, PostgreSQL and Django</a></li>
|
||
<li><a href="https://info.crunchydata.com/blog/getting-started-with-postgresql-operator-4.3-in-openshift">info.crunchydata.com: Getting Started with PostgreSQL Operator 4.3 in OpenShift</a></li>
|
||
<li><a href="https://info.crunchydata.com/blog/using-postgres-to-back-prometheus-for-your-postgresql-monitoring-1">info.crunchydata.com: Introducing the Postgres Prometheus Adapter</a></li>
|
||
<li><a href="https://info.crunchydata.com/blog/getting-started-with-postgresql-operator-4.3-in-openshift">info.crunchydata.com: Getting Started with PostgreSQL Operator 4.3 in OpenShift</a></li>
|
||
<li><a href="https://info.crunchydata.com/blog/active-active-on-kubernetes">info.crunchydata.com: Deploying Active-Active PostgreSQL on Kubernetes</a></li>
|
||
<li><a href="https://opensource.com/article/19/2/scaling-postgresql-kubernetes-operators">opensource.com: Scaling PostgreSQL with Kubernetes Operators 🌟</a> Operators let users create standardized interfaces for managing stateful applications, like PostgreSQL, across Kubernetes-enabled cloud environments.</li>
|
||
<li><a href="https://info.crunchydata.com/blog/setup-ora2pg-for-oracle-to-postgres-migration">info.crunchydata.com: Setup ora2pg for Oracle to Postgres Migration</a></li>
|
||
<li><a href="https://info.crunchydata.com/blog/pgbackrest-performing-backups-on-a-standby-cluster">info.crunchydata.com: pgBackRest - Performing Backups on a Standby Cluster</a></li>
|
||
<li><a href="https://thenewstack.io/advanced-kubernetes-namespace-management-with-the-postgresql-operator/">thenewstack.io: Advanced Kubernetes Namespace Management with the PostgreSQL Operator 🌟</a></li>
|
||
<li><a href="https://www.postgresql.org/about/news/crunchy-postgresql-operator-45-enhanced-monitoring-custom-annotations-postgresql-13-2086/">postgresql.org: Crunchy PostgreSQL Operator 4.5: Enhanced Monitoring, Custom Annotations, PostgreSQL 13 🌟</a></li>
|
||
<li><a href="https://info.crunchydata.com/blog/setup-postgresql-monitoring-in-kubernetes">info.crunchydata.com: How to Setup PostgreSQL Monitoring in Kubernetes</a></li>
|
||
<li><a href="https://info.crunchydata.com/blog/postgresql-monitoring-for-application-developers-dba-stats">info.crunchydata.com: PostgreSQL Monitoring for Application Developers: The DBA Fundamentals</a></li>
|
||
<li><a href="https://www.youtube.com/watch?v=9jbR9lZuSU0">youtube: OCB: High Availability PostgreSQL and more on OpenShift - Jonathan Katz (Crunchy Data) 🌟</a> Learn how the PostgreSQL Operator from Crunchy Data makes it easy to deploy high availability Postgres clusters on OpenShift. Beyond that, we’ll look at how the Operator pattern makes it possible to run your own open source database-as-a-service and cover the essential features: provisioning, HA, disaster recovery, monitoring, and how to do it all securely!</li>
|
||
<li><a href="https://info.crunchydata.com/blog/tuning-your-postgres-database-for-high-write-loads">info.crunchydata.com: Tuning Your Postgres Database for High Write Loads</a></li>
|
||
<li><a href="https://info.crunchydata.com/blog/crunchy-postgresql-operator-with-rook-ceph-storage">info.crunchydata.com: Using the PostgreSQL Operator with Rook Ceph Storage</a></li>
|
||
<li><a href="https://info.crunchydata.com/blog/multi-kubernetes-cluster-postgresql-deployments">info.crunchydata.com: Multi-Kubernetes Cluster PostgreSQL Deployments</a></li>
|
||
<li><a href="https://info.crunchydata.com/blog/an-easy-recipe-for-creating-a-postgresql-cluster-with-docker-swarm">info.crunchydata.com: An Easy Recipe for Creating a PostgreSQL Cluster with Docker Swarm</a></li>
|
||
<li><a href="https://info.crunchydata.com/blog/install-postgres-operator-kubernetes-on-gke-ansible">info.crunchydata.com: Deploying the PostgreSQL Operator on GKE</a></li>
|
||
<li><a href="https://info.crunchydata.com/blog/gitops-postgres-kubernetes">info.crunchydata.com: Using GitOps to Self-Manage Postgres in Kubernetes 🌟</a></li>
|
||
<li><a href="https://info.crunchydata.com/blog/kubernetes-pod-tolerations-and-postgresql-deployment-strategies">info.crunchydata.com: Kubernetes Pod Tolerations and Postgres Deployment Strategies</a></li>
|
||
<li><a href="https://blog.crunchydata.com/blog/gitops-postgres-kubernetes-helm">blog.crunchydata.com: Helm, GitOps and the Postgres Operator</a></li>
|
||
<li><a href="https://blog.crunchydata.com/blog/crunchy-postgres-operator-4.6.0">blog.crunchydata.com: Crunchy Postgres Operator 4.6.0 🌟</a></li>
|
||
<li><a href="https://blog.crunchydata.com/blog/set-up-tls-for-postgresql-in-kubernetes">blog.crunchydata.com: Deploy PostgreSQL With TLS in Kubernetes</a></li>
|
||
<li><a href="https://blog.crunchydata.com/blog/announcing-google-cloud-storage-gcs-support-for-pgbackrest">blog.crunchydata.com: Announcing Google Cloud Storage (GCS) Support for pgBackRest</a></li>
|
||
<li><a href="https://www.youtube.com/watch?v=9wuUXi6Qbis&ab_channel=MichaelBornholdtNielsen">youtube: Install and use Crunchy PostgreSQLfor OpenShift operator for simple todo app on OpenShift 🌟</a></li>
|
||
<li><a href="https://blog.crunchydata.com/blog/tentative-smarter-query-optimization-in-postgres-starts-with-pg_stat_statements">blog.crunchydata.com: Query Optimization in Postgres with pg_stat_statements</a></li>
|
||
<li><a href="https://blog.crunchydata.com/blog/kubernetes-pod-tolerations-and-postgresql-deployment-strategies">blog.crunchydata.com: Kubernetes Pod Tolerations and Postgres Deployment Strategies 🌟</a></li>
|
||
<li><a href="https://blog.crunchydata.com/blog/active-active-postgres-federation-on-kubernetes">blog.crunchydata.com: Active-Active PostgreSQL Federation on Kubernetes</a></li>
|
||
<li><a href="https://blog.crunchydata.com/blog/multi-kubernetes-cluster-postgresql-deployments">blog.crunchydata.com: Multi-Kubernetes Cluster PostgreSQL Deployments</a></li>
|
||
<li><a href="https://blog.crunchydata.com/news/next-generation-crunchy-postgres-for-kubernetes-released">blog.crunchydata.com: Next Generation Crunchy Postgres for Kubernetes 5.0 Released</a></li>
|
||
<li><a href="https://blog.crunchydata.com/blog/pgbackrest-point-in-time-recovery-using-crunchy-postgresql-operator">blog.crunchydata.com: pgBackRest Point-In-Time Recovery Using Crunchy PostgreSQL Operator</a></li>
|
||
<li><a href="https://blog.crunchydata.com/blog/using-cert-manager-to-deploy-tls-for-postgres-on-kubernetes">blog.crunchydata.com: Using Cert Manager to Deploy TLS for Postgres on Kubernetes</a></li>
|
||
<li><a href="https://dzone.com/articles/postgresql-ha-and-kubernetes">dzone: PostgreSQL HA and Kubernetes</a> I share my thoughts about how to set up a PostgreSQL Database in Kubernetes with some level of high availability, introducing 3 different architectural styles to do so.</li>
|
||
<li><a href="https://blog.crunchydata.com/blog/resize-postgres-kubernetes-volume-instance-sets">blog.crunchydata.com: Can’t Resize your Postgres Kubernetes Volume? No Problem!</a></li>
|
||
<li><a href="https://blog.crunchydata.com/blog/your-guide-to-connection-management-in-postgres">blog.crunchydata.com: Your Guide to Connection Management in Postgres 🌟</a></li>
|
||
<li><a href="https://blog.crunchydata.com/blog/postgresql-14-on-kubernetes"><mark>blog.crunchydata.com: PostgreSQL 14 on Kubernetes (with examples!)</mark></a></li>
|
||
<li><a href="https://blog.crunchydata.com/blog/kube-cluster-from-scratch-on-rocky-8">blog.crunchydata.com: Kubernetes + Postgres Cluster From Scratch on Rocky 8</a></li>
|
||
<li><a href="https://blog.crunchydata.com/blog/kube-cluster-from-scratch-on-rocky-8">blog.crunchydata.com: Kubernetes + Postgres Cluster From Scratch on Rocky 8</a></li>
|
||
<li><a href="https://blog.crunchydata.com/blog/announcing-postgres-container-apps-easy-deploy-postgres-apps">blog.crunchydata.com: Announcing Postgres Container Apps: Easy Deploy Postgres Apps</a> With Postgres Container Apps you can, from directly inside Postgres with a simple function call, spin up a container that is running right alongside your Postgres database. </li>
|
||
</ul>
|
||
<h2 id="crunchy-data-developer-portal">Crunchy Data Developer Portal</h2>
|
||
<ul>
|
||
<li><a href="https://info.crunchydata.com/blog/announcing-the-crunchy-data-developer-portal">Announcing the Crunchy Data Developer Portal</a></li>
|
||
<li><a href="https://www.crunchydata.com/developers">Crunchy Data Developer Portal</a> Self-service tools for developers and data scientists to easily get productive with PostgreSQL and Crunchy Data products.</li>
|
||
</ul>
|
||
<h2 id="crunchy-data-postgres-operator-in-openshift-4-overview-proof-of-concept">Crunchy Data Postgres Operator in OpenShift 4. Overview & Proof of Concept</h2>
|
||
<ul>
|
||
<li>In earlier days, Red Hat recommended running PostgreSQL database outside the Kubernetes cluster. Now, with <a href="https://kubernetes.io/docs/concepts/extend-kubernetes/operator/">Kubernetes Operator</a> technology, you can run stateful database applications on Kubernetes.</li>
|
||
<li><a href="https://github.com/CrunchyData/postgres-operator">Crunchy PostgreSQL Operator</a> extends Kubernetes to give you the power to easily create, configure and manage PostgreSQL clusters at scale. When combined with the <a href="https://github.com/CrunchyData/crunchy-containers">Crunchy PostgreSQL Container Suite</a>, the Crunchy PostgreSQL Operator provides an open source software solution for PostgreSQL scaling, high-availability, disaster recovery, monitoring, and more. All of this capability comes with the repeatability and automation that comes from Operators on Kubernetes.</li>
|
||
<li>Crunchy PostgreSQL Operator is open source and developed in close collaboration with users to support enterprise deployments of cloud agnostic PostgreSQL-as-a-Service capability. This release comes after extensive feedback from our customers and the community to ensure the scalability and security that sysadmins, DBAs, and developers have come to rely on.</li>
|
||
<li><a href="https://www.openshift.com/blog/leveraging-the-crunchy-postgresql">Crunchy PostgreSQL and Openshift</a></li>
|
||
<li>Crunchy Postgres Solutions: <ol>
|
||
<li><strong><a href="https://github.com/CrunchyData/postgres-operator">Postgres Operator Community Edition</a>:</strong><ul>
|
||
<li>‘pgo’ CLI tool</li>
|
||
<li>Not certified by Red Hat</li>
|
||
<li>The Operator can be deployed by multiple methods including:<ul>
|
||
<li><a href="https://access.crunchydata.com/documentation/postgres-operator/4.3.0/installation/postgres-operator/">The PostgreSQL Operator Installer with kubectl</a></li>
|
||
<li><a href="https://access.crunchydata.com/documentation/postgres-operator/4.3.0/installation/other/bash/">Install Operator Using Bash (the one used in this overview)</a></li>
|
||
<li><a href="https://access.crunchydata.com/documentation/postgres-operator/4.3.0/installation/other/ansible/">Ansible playbook installation</a></li>
|
||
<li>CLI installation using OLM <strong>(Deprecated)</strong>: new CatalogSource added via “pgo.catalogsource.yaml”.</li>
|
||
<li>Openshift Console installation using OLM (OperatorHub):<ul>
|
||
<li>New CatalogSource requirement. </li>
|
||
<li>CLI settings required.</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li><strong>Certified Crunchydata Postgres Operator (OLM/OperatorHub):</strong><ul>
|
||
<li>Openshift Console installation using OLM (OperatorHub): One-click deployment and Web based operation</li>
|
||
<li><strong>No ‘pgo’ CLI tool?</strong> (compatibility issues: unable to find in github the version that matches the server API - Sept 2019)</li>
|
||
<li>Certified by Red Hat</li>
|
||
<li>Provided by CrunchyData</li>
|
||
</ul>
|
||
</li>
|
||
<li>Other non-certified installations (unsupported by Red Hat): with or without OLM, CLI, etc.</li>
|
||
</ol>
|
||
</li>
|
||
<li><strong><a href="https://github.com/CrunchyData/crunchy-containers">Crunchy Containers Community Edition</a>:</strong><ul>
|
||
<li>Installation:<ol>
|
||
<li><a href="https://access.crunchydata.com/documentation/crunchy-postgres-containers/latest/installation-guide/installation-guide/">Installation guide</a></li>
|
||
<li><a href="https://access.crunchydata.com/documentation/crunchy-postgres-containers/latest/examples/administration/pgadmin4/">Pgadmin4 install</a> (easy)</li>
|
||
</ol>
|
||
</li>
|
||
<li>Not certified by Red Hat</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<center>
|
||
<p><img alt="crunchdydata in operatorhub" src="images/crunchydata_operator_hub.png" /></p>
|
||
</center>
|
||
<h3 id="crunchydata-postgres-operator-35">Crunchydata Postgres Operator 3.5</h3>
|
||
<ul>
|
||
<li>Release date: Januay 2019</li>
|
||
<li>pgBackRest Architecture Enhancements</li>
|
||
<li>pgBackRest Point-In-Time-Recovery</li>
|
||
<li>Fast Failover</li>
|
||
<li>Archive Storage Configuration</li>
|
||
<li>Preferred Failover Node Label</li>
|
||
<li>pgo-scheduler</li>
|
||
</ul>
|
||
<center>
|
||
<p><img alt="crunchydata operator 3.5" src="images/crunchydata_operator_3_5.png" /></p>
|
||
</center>
|
||
<h3 id="crunchydata-postgres-operator-401">Crunchydata Postgres Operator 4.0.1</h3>
|
||
<ul>
|
||
<li>Release date: June 2019</li>
|
||
<li><strong>Namespace Deployment Options:</strong> Ability to deploy the operator its own namespace but manage PostgreSQL clusters in multiple namespace. The new namespace management features lets users create multi-tenant PostgreSQL environments that add further isolation and security to their deployments. </li>
|
||
<li><strong>Further Enhancements to pgBackRest Integration:</strong> Perform pgBackRest backups to <strong>Amazon S3</strong>. This allows users to create an automated, geographically distributed, and hybrid cloud disaster recovery strategy.</li>
|
||
<li>Integrated PostgreSQL <strong>Benchmarking</strong></li>
|
||
<li><strong>Ansible</strong> Playbook Based Installation</li>
|
||
<li><strong>Operator Lifecycle Management (OLM):</strong> The OLM project is a component of the Operator Framework, an open source toolkit to manage Operators, in an effective, automated, and scalable way. OLM concepts were included into Crunchy PostgreSQL Operator to assist in the deployment on Kubernetes using OLM integration.</li>
|
||
</ul>
|
||
<center>
|
||
<p><img alt="crunchdydata operator 4.0.1" src="images/crunchydata_operator_4_0_1.png" /></p>
|
||
</center>
|
||
<h3 id="crunchydata-postgres-operator-401-community-edition">Crunchydata Postgres Operator 4.0.1 Community Edition</h3>
|
||
<h4 id="service-accounts">Service Accounts</h4>
|
||
<ul>
|
||
<li>Service accounts give us flexibility to control access to API without sharing user’s credentials. </li>
|
||
<li>Service Accounts are also used by pods and other non-human actors to perform various actions and are a central vehicle by which their access to resources is managed. <strong>By default, three service accounts are created in each project:</strong><ol>
|
||
<li><strong>Builder:</strong> Used by build pods and assigned the <strong>system:image-builder</strong> role, which grants push capability into the internal registry to any image stream in the project.</li>
|
||
<li><strong>Deployer:</strong> Used by deploy pods and assigned the <strong>system:deployer role</strong>, which allows modifying replication controllers in the project.</li>
|
||
<li><strong>Default:</strong> Used by all other pods by default.</li>
|
||
</ol>
|
||
</li>
|
||
<li>You can see them by running the following command:</li>
|
||
</ul>
|
||
<div class="highlight"><pre><span></span><code>oc<span class="w"> </span>get<span class="w"> </span>serviceaccounts
|
||
oc<span class="w"> </span>get<span class="w"> </span>sa
|
||
</code></pre></div>
|
||
<ul>
|
||
<li><strong>Running a Pod with a Different Service Account.</strong> You can run a pod with a service account other than the default:<ul>
|
||
<li>Edit the deployment configuration: <code>$ oc edit dc/<deployment_config></code></li>
|
||
<li>Add the serviceAccount and serviceAccountName parameters to the spec field, and specify the service account you want to use:</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<div class="highlight"><pre><span></span><code><span class="nt">spec</span><span class="p">:</span>
|
||
<span class="w"> </span><span class="nt">securityContext</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">{}</span>
|
||
<span class="w"> </span><span class="nt">serviceAccount</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain"><service_account></span>
|
||
<span class="w"> </span><span class="nt">serviceAccountName</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain"><service_account></span>
|
||
</code></pre></div>
|
||
<ul>
|
||
<li>
|
||
<p>Refs:</p>
|
||
<ul>
|
||
<li><a href="https://docs.openshift.com/container-platform/4.1/authentication/using-service-accounts-in-applications.html">ref1</a></li>
|
||
<li><a href="https://dzone.com/articles/understanding-openshift-security-context-constrain">ref3</a> </li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<p>Each service account is represented by the ServiceAccount resource and is associated with two additional secrets for access to the OpenShift API and the internal registry:</p>
|
||
</li>
|
||
</ul>
|
||
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>oc<span class="w"> </span>describe<span class="w"> </span>serviceaccounts/default
|
||
Name:<span class="w"> </span>default
|
||
Namespace:<span class="w"> </span>pgouser1
|
||
Labels:<span class="w"> </span><none>
|
||
Annotations:<span class="w"> </span><none>
|
||
Image<span class="w"> </span>pull<span class="w"> </span>secrets:<span class="w"> </span>default-dockercfg-nrhwt
|
||
Mountable<span class="w"> </span>secrets:<span class="w"> </span>default-token-vm8b5
|
||
<span class="w"> </span>default-dockercfg-nrhwt
|
||
Tokens:<span class="w"> </span>default-token-p6rhz
|
||
<span class="w"> </span>default-token-vm8b5
|
||
Events:<span class="w"> </span><none>
|
||
</code></pre></div>
|
||
<ul>
|
||
<li>The service account can be created and deleted with a simple command: <ul>
|
||
<li><code>oc create sa myserviceaccount</code></li>
|
||
<li><code>oc delete sa/myserviceaccount</code> </li>
|
||
</ul>
|
||
</li>
|
||
<li>Every service account is also a member of two groups:<ul>
|
||
<li><strong>system:serviceaccounts</strong>, which includes all service accounts in the cluster</li>
|
||
<li><strong>system:serviceaccounts:<project></strong>, which includes all service accounts in the project</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<h4 id="roles-assigned-to-service-accounts">Roles assigned to Service Accounts</h4>
|
||
<ul>
|
||
<li>When you create a pod, if you do not specify a service account, it is automatically assigned the <strong>default service account</strong> in the same namespace. If you get the raw json or yaml for a pod you have created (e.g. <code>oc get pods/podname -o yaml</code>), you can see the <strong>spec.serviceAccountName</strong> field has been automatically set.</li>
|
||
<li>You can grant privileges to groups of service accounts, which will effectively grant those privileges to all accounts in the group:</li>
|
||
</ul>
|
||
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>oc<span class="w"> </span>adm<span class="w"> </span>policy<span class="w"> </span>add-role-to-group<span class="w"> </span>view<span class="w"> </span>system:serviceaccounts<span class="w"> </span>-n<span class="w"> </span>myproject
|
||
role<span class="w"> </span><span class="s2">"view"</span><span class="w"> </span>added:<span class="w"> </span><span class="s2">"system:serviceaccounts"</span><span class="w"> </span>
|
||
</code></pre></div>
|
||
<ul>
|
||
<li>For example, to grant view privileges to all service accounts in the cluster in the project myproject:</li>
|
||
</ul>
|
||
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>oc<span class="w"> </span>adm<span class="w"> </span>policy<span class="w"> </span>remove-role-from-group<span class="w"> </span>view<span class="w"> </span>system:serviceaccounts<span class="w"> </span>–n<span class="w"> </span>myproject
|
||
role<span class="w"> </span><span class="s2">"view"</span><span class="w"> </span>removed:<span class="w"> </span><span class="s2">"system:serviceaccounts"</span><span class="w"> </span>
|
||
</code></pre></div>
|
||
<h4 id="security-context-constraints-scc">Security Context Constraints (SCC)</h4>
|
||
<ul>
|
||
<li><strong>Security Context Constraints (SCCs)</strong> control what actions pods can perform and what resources they can access. </li>
|
||
<li>SCCs combine a set of security configurations into a single policy object that can be applied to pods. </li>
|
||
<li>These security configurations include, but are not limited to, Linux Capabilities, Seccomp Profiles, User and Group ID Ranges, and types of mounts. </li>
|
||
<li>OpenShift ships with several SCCs:<ul>
|
||
<li>The most constrained is the <strong>restricted SCC</strong>, and the least constrained is the <strong>privileged SCC</strong>:<ul>
|
||
<li><code>oc edit scc restricted</code></li>
|
||
<li><code>oc edit scc privileged</code> </li>
|
||
</ul>
|
||
</li>
|
||
<li>The other SCCs provide intermediate levels of constraint for various use cases. </li>
|
||
<li><strong>The restricted SCC is granted to all authenticated users by default.</strong></li>
|
||
<li><strong>The default SCC for most pods should be the restricted SCC.</strong></li>
|
||
</ul>
|
||
</li>
|
||
<li>If required, a cluster administrator may <strong>allow certain pods to run with different SCCs</strong>. Pods should be run with the most restrictive SCC possible. <strong>Pods inherit their SCC from the Service Account used to run the pod</strong>. With the default project template, new projects get a <strong>Service Account named default</strong> that is used to run pods. This default service account is only granted the ability to run the restricted SCC.</li>
|
||
</ul>
|
||
<center>
|
||
<p><img alt="crunchdydata scc1" src="images/crunchydata_scc1.png" /> <img alt="crunchdydata scc2" src="images/crunchydata_scc2.png" /></p>
|
||
</center>
|
||
<h5 id="scc-recommendations">SCC Recommendations</h5>
|
||
<ul>
|
||
<li>Use OpenShift’s Security Context Constraint feature, which has been contributed to Kubernetes as <a href="https://kubernetes.io/docs/concepts/policy/pod-security-policy/">Pod Security Policies (PSP)</a>. PSPs are still beta in Kubernetes 1.10, 1.11, 1.12, 1.13, 1.14, 1.15 .</li>
|
||
<li><strong>Use the restricted SCC as the default</strong> </li>
|
||
<li>For pods that require additional access, use the SCC that grants the least amount of additional privileges or create a custom SCC </li>
|
||
<li>Remediation: Apply the SCC with the least privilege required</li>
|
||
<li>Audit: <ul>
|
||
<li>To show all available SCCs: <code>oc describe scc</code> </li>
|
||
<li>To audit a single pod: </li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<div class="highlight"><pre><span></span><code>oc<span class="w"> </span>describe<span class="w"> </span>pod<span class="w"> </span><POD><span class="w"> </span><span class="p">|</span><span class="w"> </span>grep<span class="w"> </span>openshift.io<span class="se">\/</span>scc
|
||
openshift.io/scc:<span class="w"> </span>restricted<span class="w"> </span>
|
||
</code></pre></div>
|
||
<center>
|
||
<p><img alt="crunchdydata scc3" src="images/crunchydata_scc3.png" /></p>
|
||
</center>
|
||
<ul>
|
||
<li>
|
||
<p><strong>Problem:</strong> Default SCC is “restricted” SCC -> Crunchydata Postgres Cluster PODs are not rolled out</p>
|
||
<ul>
|
||
<li><code>oc get rs</code>: </li>
|
||
</ul>
|
||
<center markdown="1">
|
||
<p><img alt="crunchdydata restricted scc" src="images/crunchydata_restricted_scc.png" /></p>
|
||
</center>
|
||
<ul>
|
||
<li><code>oc describe rs mycluster5-lgyb-84b58f5dd9</code>: Warning <strong>FailedCreate</strong> 3m24s (x17 over 7m30s) <strong>replicaset-controller Error creating: pods “mycluster5-lgyb-84b58f5dd9-” is forbidden: unable to validate against any security context constraint: [fsGroup: Invalid value: []int64{26}: 26 is not an allowed group]</strong></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<h4 id="add-a-scc-to-a-project">Add a SCC to a Project</h4>
|
||
<ul>
|
||
<li>SCCs are not granted directly to a project. Instead, you add a service account to an SCC and either specify the service account name on your pod or, when unspecified, run as the <strong>default</strong> service account.</li>
|
||
<li><strong>To add a SCC to a user:</strong> <code>oc adm policy add-scc-to-group <scc_name> <group_name></code></li>
|
||
<li><strong>To add a SCC to all service accounts in a namespace:</strong><br />
|
||
<code>oc adm policy add-scc-to-group <scc_name> system:serviceaccounts:<serviceaccount_namespace></code></li>
|
||
<li>If you are currently in the project to which the service account belongs, you can use the -z flag and just specify the <strong>serviceaccount_name</strong>:<br />
|
||
<code>oc adm policy add-scc-to-user <scc_name> -z <serviceaccount_name></code></li>
|
||
<li>
|
||
<p>Examples:</p>
|
||
<ul>
|
||
<li><code>oc describe scc anyuid</code></li>
|
||
<li><code>oc adm policy add-scc-to-group anyuid system:serviceaccounts:pgouser1</code></li>
|
||
<li>
|
||
<p>‘default’ serviceAccount:</p>
|
||
<div class="highlight"><pre><span></span><code>oc<span class="w"> </span>adm<span class="w"> </span>policy<span class="w"> </span>add-scc-to-user<span class="w"> </span>anyuid<span class="w"> </span>system:serviceaccounts:pgouser1:default
|
||
</code></pre></div>
|
||
</li>
|
||
<li>
|
||
<p>User registered in Identity Provider:</p>
|
||
<div class="highlight"><pre><span></span><code>oc<span class="w"> </span>adm<span class="w"> </span>policy<span class="w"> </span>add-scc-to-user<span class="w"> </span>anyuid<span class="w"> </span>myuser
|
||
</code></pre></div>
|
||
</li>
|
||
<li>
|
||
<p>Custom serviceAccount:</p>
|
||
<div class="highlight"><pre><span></span><code>oc<span class="w"> </span>adm<span class="w"> </span>policy<span class="w"> </span>add-scc-to-user<span class="w"> </span>anyuid<span class="w"> </span>system:serviceaccounts:pgouser1:my-sa
|
||
</code></pre></div>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<p>Refs:</p>
|
||
<ul>
|
||
<li><a href="https://docs.openshift.com/container-platform/3.6/admin_guide/manage_scc.html">ref1</a></li>
|
||
<li><a href="https://docs.openshift.com/container-platform/3.6/admin_guide/manage_scc.html#add-scc-to-user-group-project">ref2</a></li>
|
||
<li><a href="https://dzone.com/articles/understanding-openshift-security-context-constrain">ref3 🌟</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<h5 id="workflow1-without-custom-service-account-and-without-deploymentconfig">Workflow1 without custom Service Account and without DeploymentConfig</h5>
|
||
<center>
|
||
<p><img alt="crunchdydata scc workflow1" src="images/crunchydata_scc_workflow1.png" /></p>
|
||
</center>
|
||
<h5 id="workflow2-with-custom-service-account-and-without-deploymentconfig">Workflow2 with custom Service Account and without DeploymentConfig</h5>
|
||
<center>
|
||
<p><img alt="crunchdydata scc workflow2" src="images/crunchydata_scc_workflow2.png" /></p>
|
||
</center>
|
||
<ul>
|
||
<li>Create a custom ServiceAccount and add a role to it within a Project:<ol>
|
||
<li><code>oc project pgouser1</code></li>
|
||
<li><code>oc get scc</code></li>
|
||
<li><code>oc create serviceaccount my-sa –n pgouser1</code></li>
|
||
<li><code>oc describe sa my-sa</code></li>
|
||
<li><code>oc get scc</code></li>
|
||
<li><code>oc adm policy add-scc-to-user anyuid system:serviceaccount:pgouser1:my-sa</code></li>
|
||
<li><code>oc policy add-role-to-user edit system:serviceaccount:pgouser1:my-sa</code></li>
|
||
<li>Alternative to step #6:</li>
|
||
</ol>
|
||
</li>
|
||
</ul>
|
||
<div class="highlight"><pre><span></span><code>oc<span class="w"> </span>edit<span class="w"> </span>scc<span class="w"> </span>anyuid<span class="w"> </span>
|
||
</code></pre></div>
|
||
<div class="highlight"><pre><span></span><code><span class="nt">users</span><span class="p">:</span>
|
||
<span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">system:serviceaccount:pgouser1:my-sa</span>
|
||
</code></pre></div>
|
||
<ul>
|
||
<li>
|
||
<p>Other commands of interest:</p>
|
||
<ul>
|
||
<li><code>oc get role</code></li>
|
||
<li><code>oc describe role pgo-role</code></li>
|
||
<li><code>oc edit role pgo-role</code> </li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<p>References:</p>
|
||
<ul>
|
||
<li><a href="https://blog.openshift.com/understanding-service-accounts-sccs/">ref1</a></li>
|
||
<li><a href="https://docs.openshift.com/container-platform/4.1/authentication/understanding-and-creating-service-accounts.html">ref2</a></li>
|
||
<li><a href="https://docs.openshift.com/container-platform/4.1/authentication/managing-security-context-constraints.html#role-based-access-to-ssc_configuring-internal-oauth">ref3</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<h5 id="workflow3-with-custom-service-account-and-deploymentconfig">Workflow3 with custom service Account and DeploymentConfig</h5>
|
||
<center>
|
||
<p><img alt="crunchdydata scc workflow3" src="images/crunchydata_scc_workflow3.png" /></p>
|
||
</center>
|
||
<h4 id="environment-setup-port-forward-and-wsl">Environment setup. Port Forward and WSL</h4>
|
||
<ul>
|
||
<li>Deployment method used in this presentation: <a href="https://access.crunchydata.com/documentation/postgres-operator/4.3.0/installation/other/bash/">Install Operator Using Bash</a></li>
|
||
<li>Config files setup by installer are saved in:<ul>
|
||
<li>“pgo” Project -> Deployments</li>
|
||
<li>“pgo” Project -> Deployment Configs (empty, openshift feature not provided by CrunchyData)</li>
|
||
<li>“pgo” Project -> Secrets</li>
|
||
<li>“pgo” Project -> Config Maps</li>
|
||
</ul>
|
||
</li>
|
||
<li>References:<ul>
|
||
<li><a href="https://access.crunchydata.com/documentation/postgres-operator/latest/operatorcli/pgo-overview/">ref1</a></li>
|
||
</ul>
|
||
</li>
|
||
<li>WSL (Windows Subystem for Linux): <strong>alog/olog/clog</strong> functions must be adapted to be run in WSL’s Ubuntu:</li>
|
||
</ul>
|
||
<div class="highlight"><pre><span></span><code>vim<span class="w"> </span><span class="nv">$HOME</span>/.bashrc
|
||
</code></pre></div>
|
||
<div class="highlight"><pre><span></span><code><span class="c1"># ~/.bashrc: executed by bash(1) for non-login shells.</span>
|
||
<span class="c1"># see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)</span>
|
||
<span class="c1"># for examples</span>
|
||
<span class="c1"># If not running interactively, don't do anything</span>
|
||
<span class="k">case</span><span class="w"> </span><span class="nv">$-</span><span class="w"> </span><span class="k">in</span>
|
||
<span class="w"> </span>*i*<span class="o">)</span><span class="w"> </span><span class="p">;;</span>
|
||
<span class="w"> </span>*<span class="o">)</span><span class="w"> </span><span class="k">return</span><span class="p">;;</span>
|
||
<span class="k">esac</span>
|
||
<span class="c1"># don't put duplicate lines or lines starting with space in the history.</span>
|
||
<span class="c1"># See bash(1) for more options</span>
|
||
<span class="nv">HISTCONTROL</span><span class="o">=</span>ignoreboth
|
||
<span class="c1"># append to the history file, don't overwrite it</span>
|
||
<span class="nb">shopt</span><span class="w"> </span>-s<span class="w"> </span>histappend
|
||
<span class="c1"># for setting history length see HISTSIZE and HISTFILESIZE in bash(1)</span>
|
||
<span class="nv">HISTSIZE</span><span class="o">=</span><span class="m">1000</span>
|
||
<span class="nv">HISTFILESIZE</span><span class="o">=</span><span class="m">2000</span>
|
||
<span class="c1"># check the window size after each command and, if necessary,</span>
|
||
<span class="c1"># update the values of LINES and COLUMNS.</span>
|
||
<span class="nb">shopt</span><span class="w"> </span>-s<span class="w"> </span>checkwinsize
|
||
<span class="c1"># If set, the pattern "**" used in a pathname expansion context will</span>
|
||
<span class="c1"># match all files and zero or more directories and subdirectories.</span>
|
||
<span class="c1">#shopt -s globstar</span>
|
||
<span class="c1"># make less more friendly for non-text input files, see lesspipe(1)</span>
|
||
<span class="o">[</span><span class="w"> </span>-x<span class="w"> </span>/usr/bin/lesspipe<span class="w"> </span><span class="o">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="nb">eval</span><span class="w"> </span><span class="s2">"</span><span class="k">$(</span><span class="nv">SHELL</span><span class="o">=</span>/bin/sh<span class="w"> </span>lesspipe<span class="k">)</span><span class="s2">"</span>
|
||
<span class="c1"># set variable identifying the chroot you work in (used in the prompt below)</span>
|
||
<span class="k">if</span><span class="w"> </span><span class="o">[</span><span class="w"> </span>-z<span class="w"> </span><span class="s2">"</span><span class="si">${</span><span class="nv">debian_chroot</span><span class="k">:-</span><span class="si">}</span><span class="s2">"</span><span class="w"> </span><span class="o">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="o">[</span><span class="w"> </span>-r<span class="w"> </span>/etc/debian_chroot<span class="w"> </span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
|
||
<span class="w"> </span><span class="nv">debian_chroot</span><span class="o">=</span><span class="k">$(</span>cat<span class="w"> </span>/etc/debian_chroot<span class="k">)</span>
|
||
<span class="k">fi</span>
|
||
<span class="c1"># set a fancy prompt (non-color, unless we know we "want" color)</span>
|
||
<span class="k">case</span><span class="w"> </span><span class="s2">"</span><span class="nv">$TERM</span><span class="s2">"</span><span class="w"> </span><span class="k">in</span>
|
||
<span class="w"> </span>xterm-color<span class="p">|</span>*-256color<span class="o">)</span><span class="w"> </span><span class="nv">color_prompt</span><span class="o">=</span>yes<span class="p">;;</span>
|
||
<span class="k">esac</span>
|
||
<span class="c1"># uncomment for a colored prompt, if the terminal has the capability; turned</span>
|
||
<span class="c1"># off by default to not distract the user: the focus in a terminal window</span>
|
||
<span class="c1"># should be on the output of commands, not on the prompt</span>
|
||
<span class="c1">#force_color_prompt=yes</span>
|
||
<span class="k">if</span><span class="w"> </span><span class="o">[</span><span class="w"> </span>-n<span class="w"> </span><span class="s2">"</span><span class="nv">$force_color_prompt</span><span class="s2">"</span><span class="w"> </span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="o">[</span><span class="w"> </span>-x<span class="w"> </span>/usr/bin/tput<span class="w"> </span><span class="o">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span>tput<span class="w"> </span>setaf<span class="w"> </span><span class="m">1</span><span class="w"> </span>><span class="p">&</span>/dev/null<span class="p">;</span><span class="w"> </span><span class="k">then</span>
|
||
<span class="w"> </span><span class="c1"># We have color support; assume it's compliant with Ecma-48</span>
|
||
<span class="w"> </span><span class="c1"># (ISO/IEC-6429). (Lack of such support is extremely rare, and such</span>
|
||
<span class="w"> </span><span class="c1"># a case would tend to support setf rather than setaf.)</span>
|
||
<span class="w"> </span><span class="nv">color_prompt</span><span class="o">=</span>yes
|
||
<span class="w"> </span><span class="k">else</span>
|
||
<span class="w"> </span><span class="nv">color_prompt</span><span class="o">=</span>
|
||
<span class="w"> </span><span class="k">fi</span>
|
||
<span class="k">fi</span>
|
||
<span class="k">if</span><span class="w"> </span><span class="o">[</span><span class="w"> </span><span class="s2">"</span><span class="nv">$color_prompt</span><span class="s2">"</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>yes<span class="w"> </span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
|
||
<span class="w"> </span><span class="nv">PS1</span><span class="o">=</span><span class="s1">'${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '</span>
|
||
<span class="k">else</span>
|
||
<span class="w"> </span><span class="nv">PS1</span><span class="o">=</span><span class="s1">'${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '</span>
|
||
<span class="k">fi</span>
|
||
<span class="nb">unset</span><span class="w"> </span>color_prompt<span class="w"> </span>force_color_prompt
|
||
<span class="c1"># If this is an xterm set the title to user@host:dir</span>
|
||
<span class="k">case</span><span class="w"> </span><span class="s2">"</span><span class="nv">$TERM</span><span class="s2">"</span><span class="w"> </span><span class="k">in</span>
|
||
xterm*<span class="p">|</span>rxvt*<span class="o">)</span>
|
||
<span class="w"> </span><span class="nv">PS1</span><span class="o">=</span><span class="s2">"\[\e]0;</span><span class="si">${</span><span class="nv">debian_chroot</span><span class="p">:+(</span><span class="nv">$debian_chroot</span><span class="p">)</span><span class="si">}</span><span class="s2">\u@\h: \w\a\]</span><span class="nv">$PS1</span><span class="s2">"</span>
|
||
<span class="w"> </span><span class="p">;;</span>
|
||
*<span class="o">)</span>
|
||
<span class="w"> </span><span class="p">;;</span>
|
||
<span class="k">esac</span>
|
||
<span class="c1"># enable color support of ls and also add handy aliases</span>
|
||
<span class="k">if</span><span class="w"> </span><span class="o">[</span><span class="w"> </span>-x<span class="w"> </span>/usr/bin/dircolors<span class="w"> </span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
|
||
<span class="w"> </span><span class="nb">test</span><span class="w"> </span>-r<span class="w"> </span>~/.dircolors<span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="nb">eval</span><span class="w"> </span><span class="s2">"</span><span class="k">$(</span>dircolors<span class="w"> </span>-b<span class="w"> </span>~/.dircolors<span class="k">)</span><span class="s2">"</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nb">eval</span><span class="w"> </span><span class="s2">"</span><span class="k">$(</span>dircolors<span class="w"> </span>-b<span class="k">)</span><span class="s2">"</span>
|
||
<span class="w"> </span><span class="nb">alias</span><span class="w"> </span><span class="nv">ls</span><span class="o">=</span><span class="s1">'ls --color=auto'</span>
|
||
<span class="w"> </span><span class="c1">#alias dir='dir --color=auto'</span>
|
||
<span class="w"> </span><span class="c1">#alias vdir='vdir --color=auto'</span>
|
||
<span class="w"> </span><span class="nb">alias</span><span class="w"> </span><span class="nv">grep</span><span class="o">=</span><span class="s1">'grep --color=auto'</span>
|
||
<span class="w"> </span><span class="nb">alias</span><span class="w"> </span><span class="nv">fgrep</span><span class="o">=</span><span class="s1">'fgrep --color=auto'</span>
|
||
<span class="w"> </span><span class="nb">alias</span><span class="w"> </span><span class="nv">egrep</span><span class="o">=</span><span class="s1">'egrep --color=auto'</span>
|
||
<span class="k">fi</span>
|
||
<span class="c1"># colored GCC warnings and errors</span>
|
||
<span class="c1">#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'</span>
|
||
<span class="c1"># some more ls aliases</span>
|
||
<span class="nb">alias</span><span class="w"> </span><span class="nv">ll</span><span class="o">=</span><span class="s1">'ls -alF'</span>
|
||
<span class="nb">alias</span><span class="w"> </span><span class="nv">la</span><span class="o">=</span><span class="s1">'ls -A'</span>
|
||
<span class="nb">alias</span><span class="w"> </span><span class="nv">l</span><span class="o">=</span><span class="s1">'ls -CF'</span>
|
||
<span class="c1"># Add an "alert" alias for long running commands. Use like so:</span>
|
||
<span class="c1"># sleep 10; alert</span>
|
||
<span class="nb">alias</span><span class="w"> </span><span class="nv">alert</span><span class="o">=</span><span class="s1">'notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '</span><span class="se">\'</span><span class="s1">'s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'</span><span class="se">\'</span><span class="s1">')"'</span>
|
||
<span class="c1"># Alias definitions.</span>
|
||
<span class="c1"># You may want to put all your additions into a separate file like</span>
|
||
<span class="c1"># ~/.bash_aliases, instead of adding them here directly.</span>
|
||
<span class="c1"># See /usr/share/doc/bash-doc/examples in the bash-doc package.</span>
|
||
<span class="k">if</span><span class="w"> </span><span class="o">[</span><span class="w"> </span>-f<span class="w"> </span>~/.bash_aliases<span class="w"> </span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
|
||
<span class="w"> </span>.<span class="w"> </span>~/.bash_aliases
|
||
<span class="k">fi</span>
|
||
<span class="c1"># enable programmable completion features (you don't need to enable</span>
|
||
<span class="c1"># this, if it's already enabled in /etc/bash.bashrc and /etc/profile</span>
|
||
<span class="c1"># sources /etc/bash.bashrc).</span>
|
||
<span class="k">if</span><span class="w"> </span>!<span class="w"> </span><span class="nb">shopt</span><span class="w"> </span>-oq<span class="w"> </span>posix<span class="p">;</span><span class="w"> </span><span class="k">then</span>
|
||
<span class="k">if</span><span class="w"> </span><span class="o">[</span><span class="w"> </span>-f<span class="w"> </span>/usr/share/bash-completion/bash_completion<span class="w"> </span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
|
||
<span class="w"> </span>.<span class="w"> </span>/usr/share/bash-completion/bash_completion
|
||
<span class="k">elif</span><span class="w"> </span><span class="o">[</span><span class="w"> </span>-f<span class="w"> </span>/etc/bash_completion<span class="w"> </span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
|
||
<span class="w"> </span>.<span class="w"> </span>/etc/bash_completion
|
||
<span class="k">fi</span>
|
||
<span class="k">fi</span>
|
||
<span class="c1">#########################################</span>
|
||
<span class="c1"># CRUNCHYDATA POSTGRES OPERATOR SETTINGS:</span>
|
||
<span class="c1">#########################################</span>
|
||
<span class="c1"># operator env vars</span>
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">PATH</span><span class="o">=</span><span class="nv">$PATH</span>:<span class="nv">$HOME</span>/odev/bin
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">PGO_APISERVER_URL</span><span class="o">=</span>https://127.0.0.1:18443
|
||
<span class="c1">#export PGO_APISERVER_URL=https://172.25.212.138:8443</span>
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">PGO_CA_CERT</span><span class="o">=</span><span class="nv">$HOME</span>/odev/src/github.com/crunchydata/postgres-operator/conf/postgres-operator/server.crt
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">PGO_CLIENT_CERT</span><span class="o">=</span><span class="nv">$HOME</span>/odev/src/github.com/crunchydata/postgres-operator/conf/postgres-operator/server.crt
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">PGO_CLIENT_KEY</span><span class="o">=</span><span class="nv">$HOME</span>/odev/src/github.com/crunchydata/postgres-operator/conf/postgres-operator/server.key
|
||
<span class="c1">#alias setip='export PGO_APISERVER_URL=https://`kubectl get service postgres-operator -o=jsonpath="{.spec.clusterIP}"`:18443'</span>
|
||
<span class="c1">#alias alog='kubectl logs `kubectl get pod --selector=name=postgres-operator -o jsonpath="{.items[0].metadata.name}"` -c apiserver'</span>
|
||
<span class="c1">#alias olog='kubectl logs `kubectl get pod --selector=name=postgres-operator -o jsonpath="{.items[0].metadata.name}"` -c operator'</span>
|
||
<span class="c1">#</span>
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">CCP_IMAGE_TAG</span><span class="o">=</span>rhel7-11.1-2.3.0
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">CCP_IMAGE_PREFIX</span><span class="o">=</span>registry.connect.redhat.com/crunchydata
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">PGO_CMD</span><span class="o">=</span>oc
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">PGO_BASEOS</span><span class="o">=</span>rhel7
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">PGO_VERSION</span><span class="o">=</span><span class="m">4</span>.0.1
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">PGO_NAMESPACE</span><span class="o">=</span>pgo
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">PGO_IMAGE_TAG</span><span class="o">=</span>rhel7-4.0.1
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">PGO_IMAGE_PREFIX</span><span class="o">=</span>registry.connect.redhat.com/crunchydata
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">GOPATH</span><span class="o">=</span><span class="nv">$HOME</span>/odev
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">GOBIN</span><span class="o">=</span><span class="nv">$GOPATH</span>/bin
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">PATH</span><span class="o">=</span><span class="nv">$PATH</span>:<span class="nv">$GOBIN</span>
|
||
<span class="c1"># NAMESPACE is the list of namespaces the Operator will watch</span>
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">NAMESPACE</span><span class="o">=</span>pgouser1,pgouser2
|
||
<span class="c1"># PGO_OPERATOR_NAMESPACE is the namespace the Operator is deployed into</span>
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">PGO_OPERATOR_NAMESPACE</span><span class="o">=</span>pgo
|
||
<span class="c1"># PGO_CMD values are either kubectl or oc, use oc if Openshift</span>
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">PGO_CMD</span><span class="o">=</span>kubectl
|
||
<span class="c1"># the directory location of the Operator scripts</span>
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">PGOROOT</span><span class="o">=</span><span class="nv">$GOPATH</span>/src/github.com/crunchydata/postgres-operator
|
||
<span class="c1"># the version of the Operator you run is set by these vars</span>
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">PGO_IMAGE_PREFIX</span><span class="o">=</span>crunchydata
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">PGO_BASEOS</span><span class="o">=</span>centos7
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">PGO_VERSION</span><span class="o">=</span><span class="m">4</span>.0.1
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">PGO_IMAGE_TAG</span><span class="o">=</span><span class="nv">$PGO_BASEOS</span>-<span class="nv">$PGO_VERSION</span>
|
||
<span class="c1"># for the pgo CLI to authenticate with using TLS</span>
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">PGO_CA_CERT</span><span class="o">=</span><span class="nv">$PGOROOT</span>/conf/postgres-operator/server.crt
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">PGO_CLIENT_CERT</span><span class="o">=</span><span class="nv">$PGOROOT</span>/conf/postgres-operator/server.crt
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">PGO_CLIENT_KEY</span><span class="o">=</span><span class="nv">$PGOROOT</span>/conf/postgres-operator/server.key
|
||
<span class="c1"># common bash functions for working with the Operator</span>
|
||
<span class="k">function</span><span class="w"> </span>setip<span class="o">()</span><span class="w"> </span><span class="o">{</span><span class="w"> </span>
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">PGO_APISERVER_URL</span><span class="o">=</span>https://<span class="sb">`</span><span class="nv">$PGO_CMD</span><span class="w"> </span>-n<span class="w"> </span><span class="s2">"</span><span class="nv">$PGO_OPERATOR_NAMESPACE</span><span class="s2">"</span><span class="w"> </span>get<span class="w"> </span>service<span class="w"> </span>postgres-operator<span class="w"> </span>-o<span class="o">=</span><span class="nv">jsonpath</span><span class="o">=</span><span class="s2">"{.spec.clusterIP}"</span><span class="sb">`</span>:18443<span class="w"> </span>
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">CO_APISERVER_URL</span><span class="o">=</span>https://<span class="sb">`</span><span class="nv">$PGO_CMD</span><span class="w"> </span>-n<span class="w"> </span><span class="s2">"</span><span class="nv">$PGO_OPERATOR_NAMESPACE</span><span class="s2">"</span><span class="w"> </span>get<span class="w"> </span>service<span class="w"> </span>postgres-operator<span class="w"> </span>-o<span class="o">=</span><span class="nv">jsonpath</span><span class="o">=</span><span class="s2">"{.spec.clusterIP}"</span><span class="sb">`</span>:18443<span class="w"> </span>
|
||
<span class="o">}</span>
|
||
<span class="k">function</span><span class="w"> </span>alog<span class="o">()</span><span class="w"> </span><span class="o">{</span>
|
||
<span class="nv">$PGO_CMD</span><span class="w"> </span>-n<span class="w"> </span><span class="s2">"</span><span class="nv">$PGO_OPERATOR_NAMESPACE</span><span class="s2">"</span><span class="w"> </span>logs<span class="w"> </span><span class="sb">`</span><span class="nv">$PGO_CMD</span><span class="w"> </span>-n<span class="w"> </span><span class="s2">"</span><span class="nv">$PGO_OPERATOR_NAMESPACE</span><span class="s2">"</span><span class="w"> </span>get<span class="w"> </span>pod<span class="w"> </span>--selector<span class="o">=</span><span class="nv">name</span><span class="o">=</span>postgres-operator<span class="w"> </span>-o<span class="w"> </span><span class="nv">jsonpath</span><span class="o">=</span><span class="s2">"{.items[0].metadata.name}"</span><span class="sb">`</span><span class="w"> </span>-c<span class="w"> </span>apiserver
|
||
<span class="o">}</span>
|
||
<span class="k">function</span><span class="w"> </span>olog<span class="w"> </span><span class="o">()</span><span class="w"> </span><span class="o">{</span>
|
||
<span class="nv">$PGO_CMD</span><span class="w"> </span>-n<span class="w"> </span><span class="s2">"</span><span class="nv">$PGO_OPERATOR_NAMESPACE</span><span class="s2">"</span><span class="w"> </span>logs<span class="w"> </span><span class="sb">`</span><span class="nv">$PGO_CMD</span><span class="w"> </span>-n<span class="w"> </span><span class="s2">"</span><span class="nv">$PGO_OPERATOR_NAMESPACE</span><span class="s2">"</span><span class="w"> </span>get<span class="w"> </span>pod<span class="w"> </span>--selector<span class="o">=</span><span class="nv">name</span><span class="o">=</span>postgres-operator<span class="w"> </span>-o<span class="w"> </span><span class="nv">jsonpath</span><span class="o">=</span><span class="s2">"{.items[0].metadata.name}"</span><span class="sb">`</span><span class="w"> </span>-c<span class="w"> </span>operator
|
||
<span class="o">}</span>
|
||
<span class="k">function</span><span class="w"> </span>slog<span class="w"> </span><span class="o">()</span><span class="w"> </span><span class="o">{</span>
|
||
<span class="nv">$PGO_CMD</span><span class="w"> </span>-n<span class="w"> </span><span class="s2">"</span><span class="nv">$PGO_OPERATOR_NAMESPACE</span><span class="s2">"</span><span class="w"> </span>logs<span class="w"> </span><span class="sb">`</span><span class="nv">$PGO_CMD</span><span class="w"> </span>-n<span class="w"> </span><span class="s2">"</span><span class="nv">$PGO_OPERATOR_NAMESPACE</span><span class="s2">"</span><span class="w"> </span>get<span class="w"> </span>pod<span class="w"> </span>--selector<span class="o">=</span><span class="nv">name</span><span class="o">=</span>postgres-operator<span class="w"> </span>-o<span class="w"> </span><span class="nv">jsonpath</span><span class="o">=</span><span class="s2">"{.items[0].metadata.name}"</span><span class="sb">`</span><span class="w"> </span>-c<span class="w"> </span>scheduler
|
||
<span class="o">}</span>
|
||
<span class="c1">#export DOCKER_HOST=tcp://localhost:2375</span>
|
||
<span class="c1"># crunchy containers: https://github.com/CrunchyData/crunchy-containers/tree/2.4.1</span>
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">GOPATH</span><span class="o">=</span><span class="nv">$HOME</span>/cdev<span class="w"> </span><span class="c1"># set path to your new Go workspace</span>
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">GOBIN</span><span class="o">=</span><span class="nv">$GOPATH</span>/bin<span class="w"> </span><span class="c1"># set bin path </span>
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">PATH</span><span class="o">=</span><span class="nv">$PATH</span>:<span class="nv">$GOBIN</span><span class="w"> </span><span class="c1"># add Go bin path to your overall path</span>
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">CCP_BASEOS</span><span class="o">=</span>centos7<span class="w"> </span><span class="c1"># centos7 for Centos, rhel7 for Redhat</span>
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">CCP_PGVERSION</span><span class="o">=</span><span class="m">10</span><span class="w"> </span><span class="c1"># The PostgreSQL major version</span>
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">CCP_PG_FULLVERSION</span><span class="o">=</span><span class="m">10</span>.9
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">CCP_VERSION</span><span class="o">=</span><span class="m">2</span>.4.1
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">CCP_IMAGE_PREFIX</span><span class="o">=</span>crunchydata<span class="w"> </span><span class="c1"># Prefix to put before all the container image names</span>
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">CCP_IMAGE_TAG</span><span class="o">=</span><span class="nv">$CCP_BASEOS</span>-<span class="nv">$CCP_PG_FULLVERSION</span>-<span class="nv">$CCP_VERSION</span><span class="w"> </span><span class="c1"># Used to tag the images</span>
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">CCPROOT</span><span class="o">=</span><span class="nv">$GOPATH</span>/src/github.com/crunchydata/crunchy-containers<span class="w"> </span><span class="c1"># The base of the clone github repo</span>
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">CCP_SECURITY_CONTEXT</span><span class="o">=</span><span class="s2">""</span>
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">CCP_CLI</span><span class="o">=</span>oc<span class="w"> </span><span class="c1"># kubectl for K8s, oc for OpenShift</span>
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">CCP_NAMESPACE</span><span class="o">=</span>crunchy-containers<span class="w"> </span><span class="c1"># Change this to whatever namespace/openshift project name you want to use</span>
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">CCP_SECURITY_CONTEXT</span><span class="o">=</span><span class="s1">'"fsGroup":26'</span>
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">CCP_STORAGE_CLASS</span><span class="o">=</span>gp2
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">CCP_STORAGE_MODE</span><span class="o">=</span>ReadWriteOnce
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">CCP_STORAGE_CAPACITY</span><span class="o">=</span>400M
|
||
</code></pre></div>
|
||
<p><br/></p>
|
||
<ul>
|
||
<li><strong>port-forward</strong> to reach postgres-operator POD with ‘pgo’ tool (18443 port defined in previous .bashrc): </li>
|
||
</ul>
|
||
<div class="highlight"><pre><span></span><code>oc<span class="w"> </span>project<span class="w"> </span>pgo
|
||
oc<span class="w"> </span>get<span class="w"> </span>pod<span class="w"> </span>
|
||
oc<span class="w"> </span>port-forward<span class="w"> </span>postgres-operator-844d8f9777-8d5k5<span class="w"> </span>-n<span class="w"> </span>pgo<span class="w"> </span><span class="m">18443</span>:8443
|
||
</code></pre></div>
|
||
<h4 id="cluster-deployment-and-operation-with-pgo">Cluster Deployment and Operation with pgo</h4>
|
||
<div class="highlight"><pre><span></span><code>pgo<span class="w"> </span>create<span class="w"> </span>cluster<span class="w"> </span>mycluster<span class="w"> </span>--pgpool<span class="w"> </span>-n<span class="w"> </span>pgouser1<span class="w"> </span>--resources-config<span class="o">=</span>small<span class="w"> </span>--replica-count<span class="o">=</span><span class="m">1</span>
|
||
pgo<span class="w"> </span>show<span class="w"> </span>cluster<span class="w"> </span>--all<span class="w"> </span>-n<span class="w"> </span>pgouser1
|
||
pgo<span class="w"> </span>backup<span class="w"> </span>mycluster<span class="w"> </span>--backup-type<span class="o">=</span>pgbackrest<span class="w"> </span>–n<span class="w"> </span>pgouser1
|
||
pgo<span class="w"> </span>failover<span class="w"> </span>mycluster<span class="w"> </span>--query<span class="w"> </span>–n<span class="w"> </span>pgouser1
|
||
pgo<span class="w"> </span>failover<span class="w"> </span>mycluster<span class="w"> </span>--target<span class="o">=</span>mycluster-olvhy<span class="w"> </span>–n<span class="w"> </span>pgouser1
|
||
pgo<span class="w"> </span><span class="nb">test</span><span class="w"> </span>mycluster<span class="w"> </span>-n<span class="w"> </span>pgouser1
|
||
pgo<span class="w"> </span>create<span class="w"> </span>cluster<span class="w"> </span>somefastpg<span class="w"> </span>-n<span class="w"> </span>pgouser1<span class="w"> </span>--node-label<span class="o">=</span><span class="nv">speed</span><span class="o">=</span>fast
|
||
pgo<span class="w"> </span>create<span class="w"> </span>cluster<span class="w"> </span>abouncer<span class="w"> </span>--pgbouncer<span class="w"> </span><span class="o">(</span>sidecar<span class="w"> </span>pgbouncer<span class="w"> </span>added<span class="w"> </span>to<span class="w"> </span>this<span class="w"> </span>PG<span class="w"> </span>cluster<span class="o">)</span>
|
||
pgo<span class="w"> </span>create<span class="w"> </span>cluster<span class="w"> </span>apgpool<span class="w"> </span>--pgpool<span class="w"> </span>
|
||
pgo<span class="w"> </span>status<span class="w"> </span>cluster<span class="w"> </span>mycluster<span class="w"> </span>–n<span class="w"> </span>pgouser1
|
||
pgo<span class="w"> </span>ls<span class="w"> </span>mycluster<span class="w"> </span>–n<span class="w"> </span>pgouser1
|
||
pgo<span class="w"> </span>reload<span class="w"> </span>mycluster<span class="w"> </span>–n<span class="w"> </span>pgouser1
|
||
pgo<span class="w"> </span>scale<span class="w"> </span>mycluster<span class="w"> </span>–n<span class="w"> </span>pgouser1
|
||
</code></pre></div>
|
||
<p>PGO USER allows you to manage users and passwords across a set of clusters:</p>
|
||
<div class="highlight"><pre><span></span><code>pgo<span class="w"> </span>user<span class="w"> </span>–-selector<span class="o">=</span><span class="nv">name</span><span class="o">=</span>mycluster<span class="w"> </span>--expired<span class="o">=</span><span class="m">300</span><span class="w"> </span>–-update-password<span class="w"> </span>–n<span class="w"> </span>pgouser1
|
||
pgo<span class="w"> </span>user<span class="w"> </span>–-change-password<span class="o">=</span>bob<span class="w"> </span>–n<span class="w"> </span>pgouser1<span class="w"> </span>--selector<span class="o">=</span><span class="nv">name</span><span class="o">=</span>mycluster<span class="w"> </span>--password<span class="o">=</span>newpass
|
||
</code></pre></div>
|
||
<h4 id="psql-access-from-postgres-operator-pod">Psql access from postgres operator POD</h4>
|
||
<div class="highlight"><pre><span></span><code>oc<span class="w"> </span>project<span class="w"> </span>pgo
|
||
oc<span class="w"> </span>get<span class="w"> </span>pods
|
||
oc<span class="w"> </span>rsh<span class="w"> </span>postgres-operator-844d8f9777-ppjv9
|
||
<span class="nb">export</span><span class="w"> </span><span class="nv">PGPASSWORD</span><span class="o">=</span>password
|
||
psql<span class="w"> </span>-h<span class="w"> </span>mycluster-pgpool.pgouser1<span class="w"> </span>-U<span class="w"> </span>testuser<span class="w"> </span>-l
|
||
psql<span class="w"> </span>-h<span class="w"> </span>mycluster-pgpool.pgouser1<span class="w"> </span>-U<span class="w"> </span>postgres<span class="w"> </span>-c<span class="w"> </span><span class="s2">"CREATE DATABASE testdb"</span>
|
||
psql<span class="w"> </span>-h<span class="w"> </span>mycluster-pgpool.pgouser1<span class="w"> </span>-U<span class="w"> </span>postgres<span class="w"> </span>testdb<span class="w"> </span>-c<span class="w"> </span><span class="s2">"CREATE TABLE test (ID CHAR(4) NOT NULL, name TEXT NOT NULL, PRIMARY KEY (id))"</span>
|
||
psql<span class="w"> </span>-h<span class="w"> </span>mycluster-pgpool.pgouser1<span class="w"> </span>-U<span class="w"> </span>postgres<span class="w"> </span>testdb<span class="w"> </span>-c<span class="w"> </span><span class="s2">"INSERT INTO test (id,name) VALUES (1, 'user01')"</span>
|
||
psql<span class="w"> </span>-h<span class="w"> </span>mycluster-pgpool.pgouser1<span class="w"> </span>-U<span class="w"> </span>postgres<span class="w"> </span>testdb<span class="w"> </span>-c<span class="w"> </span><span class="s2">"select * from test"</span>
|
||
</code></pre></div>
|
||
<h4 id="list-databases-with-psql">List Databases with psql</h4>
|
||
<div class="highlight"><pre><span></span><code><span class="nv">postgres</span><span class="o">=</span><span class="c1"># \l</span>
|
||
<span class="w"> </span>List<span class="w"> </span>of<span class="w"> </span>databases
|
||
<span class="w"> </span>Name<span class="w"> </span><span class="p">|</span><span class="w"> </span>Owner<span class="w"> </span><span class="p">|</span><span class="w"> </span>Encoding<span class="w"> </span><span class="p">|</span><span class="w"> </span>Collate<span class="w"> </span><span class="p">|</span><span class="w"> </span>Ctype<span class="w"> </span><span class="p">|</span><span class="w"> </span>Access<span class="w"> </span>privileges
|
||
-----------+----------+----------+------------+------------+-----------------------
|
||
<span class="w"> </span>postgres<span class="w"> </span><span class="p">|</span><span class="w"> </span>postgres<span class="w"> </span><span class="p">|</span><span class="w"> </span>UTF8<span class="w"> </span><span class="p">|</span><span class="w"> </span>en_US.UTF8<span class="w"> </span><span class="p">|</span><span class="w"> </span>en_US.UTF8<span class="w"> </span><span class="p">|</span>
|
||
<span class="w"> </span>template0<span class="w"> </span><span class="p">|</span><span class="w"> </span>postgres<span class="w"> </span><span class="p">|</span><span class="w"> </span>UTF8<span class="w"> </span><span class="p">|</span><span class="w"> </span>en_US.UTF8<span class="w"> </span><span class="p">|</span><span class="w"> </span>en_US.UTF8<span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="o">=</span>c/postgres<span class="w"> </span>+
|
||
<span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nv">postgres</span><span class="o">=</span>CTc/postgres
|
||
<span class="w"> </span>template1<span class="w"> </span><span class="p">|</span><span class="w"> </span>postgres<span class="w"> </span><span class="p">|</span><span class="w"> </span>UTF8<span class="w"> </span><span class="p">|</span><span class="w"> </span>en_US.UTF8<span class="w"> </span><span class="p">|</span><span class="w"> </span>en_US.UTF8<span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="o">=</span>c/postgres<span class="w"> </span>+
|
||
<span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nv">postgres</span><span class="o">=</span>CTc/postgres
|
||
<span class="w"> </span>userdb<span class="w"> </span><span class="p">|</span><span class="w"> </span>postgres<span class="w"> </span><span class="p">|</span><span class="w"> </span>UTF8<span class="w"> </span><span class="p">|</span><span class="w"> </span>en_US.UTF8<span class="w"> </span><span class="p">|</span><span class="w"> </span>en_US.UTF8<span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="o">=</span>Tc/postgres<span class="w"> </span>+
|
||
<span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nv">postgres</span><span class="o">=</span>CTc/postgres+
|
||
<span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nv">testuser</span><span class="o">=</span>CTc/postgres+
|
||
<span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nv">user1</span><span class="o">=</span>CTc/postgres
|
||
<span class="o">(</span><span class="m">4</span><span class="w"> </span>rows<span class="o">)</span>
|
||
</code></pre></div>
|
||
<h4 id="access-from-another-pod-within-the-cluster-with-psql-client">Access from another POD within the cluster with psql client</h4>
|
||
<p>For example with <a href="https://hub.docker.com/r/centos/postgresql-10-centos7">this psql client</a></p>
|
||
<div class="highlight"><pre><span></span><code>oc<span class="w"> </span>rsh<span class="w"> </span>postgresql-10-centos7-1-pjh46
|
||
sh-4.2$<span class="w"> </span>psql<span class="w"> </span>-p<span class="w"> </span><span class="m">5432</span><span class="w"> </span>-h<span class="w"> </span>mycluster-pgpool.pgouser1<span class="w"> </span>-U<span class="w"> </span>postgres<span class="w"> </span>postgres
|
||
psql<span class="w"> </span><span class="o">(</span><span class="m">10</span>.6,<span class="w"> </span>server<span class="w"> </span><span class="m">11</span>.3<span class="o">)</span>
|
||
WARNING:<span class="w"> </span>psql<span class="w"> </span>major<span class="w"> </span>version<span class="w"> </span><span class="m">10</span>,<span class="w"> </span>server<span class="w"> </span>major<span class="w"> </span>version<span class="w"> </span><span class="m">11</span>.
|
||
<span class="w"> </span>Some<span class="w"> </span>psql<span class="w"> </span>features<span class="w"> </span>might<span class="w"> </span>not<span class="w"> </span>work.
|
||
Type<span class="w"> </span><span class="s2">"help"</span><span class="w"> </span><span class="k">for</span><span class="w"> </span>help.
|
||
|
||
<span class="nv">postgres</span><span class="o">=</span><span class="c1">#</span>
|
||
</code></pre></div>
|
||
<h4 id="access-from-another-pod-within-the-cluster-with-pgadmin4-of-crunchy-containers-community-edition">Access from another POD within the cluster with Pgadmin4 of Crunchy containers Community Edition</h4>
|
||
<ul>
|
||
<li><a href="https://access.crunchydata.com/documentation/crunchy-postgres-containers/4.3.0/container-specifications/crunchy-pgadmin4/">crunchy-pgadmin4</a></li>
|
||
<li><a href="https://access.crunchydata.com/documentation/crunchy-postgres-containers/4.3.0/examples/administration/pgadmin4/">pgAdmin 4</a></li>
|
||
</ul>
|
||
<center>
|
||
<p><img alt="crunchdydata pgadmin" src="images/crunchydata_pgadmin.png" /></p>
|
||
</center>
|
||
<h4 id="debugging-crunchydata-postgres-operator-401-community-edition">Debugging Crunchydata Postgres Operator 4.0.1 Community Edition</h4>
|
||
<ul>
|
||
<li>Debug level logging in turned on by default when deploying the Operator.</li>
|
||
<li>Sample bash functions are supplied in examples/envs.sh to view the Operator logs.</li>
|
||
<li>You can view the Operator REST API logs with the <strong>alog</strong> bash function.</li>
|
||
<li>You can view the Operator core logic logs with the <strong>olog</strong> bash function.</li>
|
||
<li>You can view the Scheduler logs with the <strong>slog</strong> bash function.</li>
|
||
<li>You can enable the pgo CLI debugging with the following flag:</li>
|
||
</ul>
|
||
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>pgo<span class="w"> </span>version<span class="w"> </span>--debug
|
||
</code></pre></div>
|
||
<ul>
|
||
<li>You can set the REST API URL as follows after a deployment if you are developing on your local host by executing the <strong>setip</strong> bash function.</li>
|
||
<li>“alog”, “olog”, “slog” and “setip” are defined in $HOME/.bashrc</li>
|
||
</ul>
|
||
<h3 id="certified-crunchydata-postgres-operator-olmoperatorhub-manual-setup">Certified Crunchydata Postgres Operator (OLM/OperatorHub). Manual Setup</h3>
|
||
<ul>
|
||
<li>We will set this up manually:<ul>
|
||
<li>StorageClass changed to “gp2” in YAML file (AWS)</li>
|
||
<li>‘pgo’ tool compatibility issues</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<center>
|
||
<p><img alt="crunchdydata operatorhub install2" src="images/crunchydata_operatorhub_install1.png" /></p>
|
||
<p><img alt="crunchdydata operatorhub install2" src="images/crunchydata_operatorhub_install2.png" /></p>
|
||
</center>
|
||
<ul>
|
||
<li>NO PODs are deployed -> configuration needed:</li>
|
||
</ul>
|
||
<center>
|
||
<p><img alt="crunchdydata operatorhub install3" src="images/crunchydata_operatorhub_install3.png" /></p>
|
||
<p><img alt="crunchdydata operatorhub install4" src="images/crunchydata_operatorhub_install4.png" /></p>
|
||
</center>
|
||
<ul>
|
||
<li>Replica Sets: where PODs should be launched</li>
|
||
</ul>
|
||
<center>
|
||
<p><img alt="crunchdydata operatorhub install5" src="images/crunchydata_operatorhub_install5.png" /></p>
|
||
</center>
|
||
<ul>
|
||
<li>ReplicaSets (environment) and Deployment:</li>
|
||
</ul>
|
||
<center>
|
||
<p><img alt="crunchdydata operatorhub install6" src="images/crunchydata_operatorhub_install6.png" /></p>
|
||
<p><img alt="crunchdydata operatorhub install7" src="images/crunchydata_operatorhub_install7.png" /></p>
|
||
</center>
|
||
<ul>
|
||
<li>Error detected. Solution:</li>
|
||
</ul>
|
||
<div class="highlight"><pre><span></span><code>oc<span class="w"> </span>adm<span class="w"> </span>policy<span class="w"> </span>add-scc-to-user<span class="w"> </span>anyuid<span class="w"> </span>system:serviceaccount:pgophub:default
|
||
</code></pre></div>
|
||
<center>
|
||
<p><img alt="crunchdydata operatorhub install8" src="images/crunchydata_operatorhub_install8.png" /></p>
|
||
</center>
|
||
<ul>
|
||
<li>We see now a new POD being created:</li>
|
||
</ul>
|
||
<center>
|
||
<p><img alt="crunchdydata operatorhub install9" src="images/crunchydata_operatorhub_install9.png" /></p>
|
||
</center>
|
||
<ul>
|
||
<li>New errors: “secrets” need to be setup:</li>
|
||
</ul>
|
||
<center>
|
||
<p><img alt="crunchdydata operatorhub install10" src="images/crunchydata_operatorhub_install10.png" /></p>
|
||
<p><img alt="crunchdydata operatorhub install11" src="images/crunchydata_operatorhub_install11.png" /></p>
|
||
<p><img alt="crunchdydata operatorhub install12" src="images/crunchydata_operatorhub_install12.png" /></p>
|
||
</center>
|
||
<ul>
|
||
<li>New errors: 3 “secrets” need to be setup manually -> POD is started successfully and we have psql access.</li>
|
||
</ul>
|
||
<center>
|
||
<p><img alt="crunchdydata operatorhub install13" src="images/crunchydata_operatorhub_install13.png" /> <img alt="crunchdydata operatorhub install14" src="images/crunchydata_operatorhub_install14.png" /></p>
|
||
<p><img alt="crunchdydata operatorhub install15" src="images/crunchydata_operatorhub_install15.png" /></p>
|
||
<p><img alt="crunchdydata operatorhub install16" src="images/crunchydata_operatorhub_install16.png" /></p>
|
||
</center>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<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 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", "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> |