index.html 47 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291
  1. <!doctype html>
  2. <html lang="en" class="no-js">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1">
  6. <link rel="prev" href="../generator/">
  7. <link rel="next" href="../security-best-practices/">
  8. <link rel="icon" href="../../assets/images/favicon.png">
  9. <meta name="generator" content="mkdocs-1.4.3, mkdocs-material-9.1.9">
  10. <title>Multi Tenancy - External Secrets Operator</title>
  11. <link rel="stylesheet" href="../../assets/stylesheets/main.85bb2934.min.css">
  12. <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  13. <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">
  14. <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
  15. <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>
  16. <script id="__analytics">function __md_analytics(){function n(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],n("js",new Date),n("config","G-QP38TD8K7V"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){this.value&&n("event","search",{search_term:this.value})}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");n("event","feedback",{page:t,data:e}),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){n("config","G-QP38TD8K7V",{page_path:e.pathname})})});var e=document.createElement("script");e.async=!0,e.src="https://www.googletagmanager.com/gtag/js?id=G-QP38TD8K7V",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script>
  17. <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script>
  18. </head>
  19. <body dir="ltr">
  20. <script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
  21. <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
  22. <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
  23. <label class="md-overlay" for="__drawer"></label>
  24. <div data-md-component="skip">
  25. <a href="#shared-clustersecretstore" class="md-skip">
  26. Skip to content
  27. </a>
  28. </div>
  29. <div data-md-component="announce">
  30. </div>
  31. <div data-md-color-scheme="default" data-md-component="outdated" hidden>
  32. <aside class="md-banner md-banner--warning">
  33. <div class="md-banner__inner md-grid md-typeset">
  34. You're not viewing the latest version.
  35. <a href="../../..">
  36. <strong>Click here to go to latest.</strong>
  37. </a>
  38. </div>
  39. <script>var el=document.querySelector("[data-md-component=outdated]"),outdated=__md_get("__outdated",sessionStorage);!0===outdated&&el&&(el.hidden=!1)</script>
  40. </aside>
  41. </div>
  42. <header class="md-header" data-md-component="header">
  43. <nav class="md-header__inner md-grid" aria-label="Header">
  44. <a href="../.." title="External Secrets Operator" class="md-header__button md-logo" aria-label="External Secrets Operator" data-md-component="logo">
  45. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
  46. </a>
  47. <label class="md-header__button md-icon" for="__drawer">
  48. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
  49. </label>
  50. <div class="md-header__title" data-md-component="header-title">
  51. <div class="md-header__ellipsis">
  52. <div class="md-header__topic">
  53. <span class="md-ellipsis">
  54. External Secrets Operator
  55. </span>
  56. </div>
  57. <div class="md-header__topic" data-md-component="header-topic">
  58. <span class="md-ellipsis">
  59. Multi Tenancy
  60. </span>
  61. </div>
  62. </div>
  63. </div>
  64. <label class="md-header__button md-icon" for="__search">
  65. <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.516 6.516 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 5Z"/></svg>
  66. </label>
  67. <div class="md-search" data-md-component="search" role="dialog">
  68. <label class="md-search__overlay" for="__search"></label>
  69. <div class="md-search__inner" role="search">
  70. <form class="md-search__form" name="search">
  71. <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>
  72. <label class="md-search__icon md-icon" for="__search">
  73. <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.516 6.516 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 5Z"/></svg>
  74. <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 11h12Z"/></svg>
  75. </label>
  76. <nav class="md-search__options" aria-label="Search">
  77. <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
  78. <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 12 19 6.41Z"/></svg>
  79. </button>
  80. </nav>
  81. </form>
  82. <div class="md-search__output">
  83. <div class="md-search__scrollwrap" data-md-scrollfix>
  84. <div class="md-search-result" data-md-component="search-result">
  85. <div class="md-search-result__meta">
  86. Initializing search
  87. </div>
  88. <ol class="md-search-result__list" role="presentation"></ol>
  89. </div>
  90. </div>
  91. </div>
  92. </div>
  93. </div>
  94. <div class="md-header__source">
  95. <a href="https://github.com/external-secrets/external-secrets" title="Go to repository" class="md-source" data-md-component="source">
  96. <div class="md-source__icon md-icon">
  97. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.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 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
  98. </div>
  99. <div class="md-source__repository">
  100. External Secrets Operator
  101. </div>
  102. </a>
  103. </div>
  104. </nav>
  105. </header>
  106. <div class="md-container" data-md-component="container">
  107. <nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
  108. <div class="md-grid">
  109. <ul class="md-tabs__list">
  110. <li class="md-tabs__item">
  111. <a href="../.." class="md-tabs__link">
  112. Introduction
  113. </a>
  114. </li>
  115. <li class="md-tabs__item">
  116. <a href="../../api/components/" class="md-tabs__link">
  117. API
  118. </a>
  119. </li>
  120. <li class="md-tabs__item">
  121. <a href="../introduction/" class="md-tabs__link md-tabs__link--active">
  122. Guides
  123. </a>
  124. </li>
  125. <li class="md-tabs__item">
  126. <a href="../../provider/aws-secrets-manager/" class="md-tabs__link">
  127. Provider
  128. </a>
  129. </li>
  130. <li class="md-tabs__item">
  131. <a href="../../examples/gitops-using-fluxcd/" class="md-tabs__link">
  132. Examples
  133. </a>
  134. </li>
  135. <li class="md-tabs__item">
  136. <a href="../../contributing/devguide/" class="md-tabs__link">
  137. Community
  138. </a>
  139. </li>
  140. </ul>
  141. </div>
  142. </nav>
  143. <main class="md-main" data-md-component="main">
  144. <div class="md-main__inner md-grid">
  145. <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
  146. <div class="md-sidebar__scrollwrap">
  147. <div class="md-sidebar__inner">
  148. <nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
  149. <label class="md-nav__title" for="__drawer">
  150. <a href="../.." title="External Secrets Operator" class="md-nav__button md-logo" aria-label="External Secrets Operator" data-md-component="logo">
  151. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
  152. </a>
  153. External Secrets Operator
  154. </label>
  155. <div class="md-nav__source">
  156. <a href="https://github.com/external-secrets/external-secrets" title="Go to repository" class="md-source" data-md-component="source">
  157. <div class="md-source__icon md-icon">
  158. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.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 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
  159. </div>
  160. <div class="md-source__repository">
  161. External Secrets Operator
  162. </div>
  163. </a>
  164. </div>
  165. <ul class="md-nav__list" data-md-scrollfix>
  166. <li class="md-nav__item md-nav__item--nested">
  167. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_1" >
  168. <div class="md-nav__link md-nav__link--index ">
  169. <a href="../..">Introduction</a>
  170. <label for="__nav_1">
  171. <span class="md-nav__icon md-icon"></span>
  172. </label>
  173. </div>
  174. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_1_label" aria-expanded="false">
  175. <label class="md-nav__title" for="__nav_1">
  176. <span class="md-nav__icon md-icon"></span>
  177. Introduction
  178. </label>
  179. <ul class="md-nav__list" data-md-scrollfix>
  180. <li class="md-nav__item">
  181. <a href="../../introduction/overview/" class="md-nav__link">
  182. Overview
  183. </a>
  184. </li>
  185. <li class="md-nav__item">
  186. <a href="../../introduction/getting-started/" class="md-nav__link">
  187. Getting started
  188. </a>
  189. </li>
  190. <li class="md-nav__item">
  191. <a href="../../introduction/faq/" class="md-nav__link">
  192. FAQ
  193. </a>
  194. </li>
  195. <li class="md-nav__item">
  196. <a href="../../introduction/stability-support/" class="md-nav__link">
  197. Stability and Support
  198. </a>
  199. </li>
  200. <li class="md-nav__item">
  201. <a href="../../introduction/deprecation-policy/" class="md-nav__link">
  202. Deprecation Policy
  203. </a>
  204. </li>
  205. </ul>
  206. </nav>
  207. </li>
  208. <li class="md-nav__item md-nav__item--nested">
  209. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2" >
  210. <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
  211. API
  212. <span class="md-nav__icon md-icon"></span>
  213. </label>
  214. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
  215. <label class="md-nav__title" for="__nav_2">
  216. <span class="md-nav__icon md-icon"></span>
  217. API
  218. </label>
  219. <ul class="md-nav__list" data-md-scrollfix>
  220. <li class="md-nav__item">
  221. <a href="../../api/components/" class="md-nav__link">
  222. Components
  223. </a>
  224. </li>
  225. <li class="md-nav__item md-nav__item--nested">
  226. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2_2" >
  227. <label class="md-nav__link" for="__nav_2_2" id="__nav_2_2_label" tabindex="0">
  228. Core Resources
  229. <span class="md-nav__icon md-icon"></span>
  230. </label>
  231. <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_2_label" aria-expanded="false">
  232. <label class="md-nav__title" for="__nav_2_2">
  233. <span class="md-nav__icon md-icon"></span>
  234. Core Resources
  235. </label>
  236. <ul class="md-nav__list" data-md-scrollfix>
  237. <li class="md-nav__item">
  238. <a href="../../api/externalsecret/" class="md-nav__link">
  239. ExternalSecret
  240. </a>
  241. </li>
  242. <li class="md-nav__item">
  243. <a href="../../api/secretstore/" class="md-nav__link">
  244. SecretStore
  245. </a>
  246. </li>
  247. <li class="md-nav__item">
  248. <a href="../../api/clustersecretstore/" class="md-nav__link">
  249. ClusterSecretStore
  250. </a>
  251. </li>
  252. <li class="md-nav__item">
  253. <a href="../../api/clusterexternalsecret/" class="md-nav__link">
  254. ClusterExternalSecret
  255. </a>
  256. </li>
  257. <li class="md-nav__item">
  258. <a href="../../api/pushsecret/" class="md-nav__link">
  259. PushSecret
  260. </a>
  261. </li>
  262. </ul>
  263. </nav>
  264. </li>
  265. <li class="md-nav__item md-nav__item--nested">
  266. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2_3" >
  267. <div class="md-nav__link md-nav__link--index ">
  268. <a href="../../api/generator/">Generators</a>
  269. <label for="__nav_2_3">
  270. <span class="md-nav__icon md-icon"></span>
  271. </label>
  272. </div>
  273. <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_3_label" aria-expanded="false">
  274. <label class="md-nav__title" for="__nav_2_3">
  275. <span class="md-nav__icon md-icon"></span>
  276. Generators
  277. </label>
  278. <ul class="md-nav__list" data-md-scrollfix>
  279. <li class="md-nav__item">
  280. <a href="../../api/generator/acr/" class="md-nav__link">
  281. Azure Container Registry
  282. </a>
  283. </li>
  284. <li class="md-nav__item">
  285. <a href="../../api/generator/ecr/" class="md-nav__link">
  286. AWS Elastic Container Registry
  287. </a>
  288. </li>
  289. <li class="md-nav__item">
  290. <a href="../../api/generator/gcr/" class="md-nav__link">
  291. Google Container Registry
  292. </a>
  293. </li>
  294. <li class="md-nav__item">
  295. <a href="../../api/generator/vault/" class="md-nav__link">
  296. Vault Dynamic Secret
  297. </a>
  298. </li>
  299. <li class="md-nav__item">
  300. <a href="../../api/generator/password/" class="md-nav__link">
  301. Password
  302. </a>
  303. </li>
  304. <li class="md-nav__item">
  305. <a href="../../api/generator/fake/" class="md-nav__link">
  306. Fake
  307. </a>
  308. </li>
  309. </ul>
  310. </nav>
  311. </li>
  312. <li class="md-nav__item md-nav__item--nested">
  313. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2_4" >
  314. <label class="md-nav__link" for="__nav_2_4" id="__nav_2_4_label" tabindex="0">
  315. Reference Docs
  316. <span class="md-nav__icon md-icon"></span>
  317. </label>
  318. <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_4_label" aria-expanded="false">
  319. <label class="md-nav__title" for="__nav_2_4">
  320. <span class="md-nav__icon md-icon"></span>
  321. Reference Docs
  322. </label>
  323. <ul class="md-nav__list" data-md-scrollfix>
  324. <li class="md-nav__item">
  325. <a href="../../api/spec/" class="md-nav__link">
  326. API specification
  327. </a>
  328. </li>
  329. <li class="md-nav__item">
  330. <a href="../../api/controller-options/" class="md-nav__link">
  331. Controller Options
  332. </a>
  333. </li>
  334. <li class="md-nav__item">
  335. <a href="../../api/metrics/" class="md-nav__link">
  336. Metrics
  337. </a>
  338. </li>
  339. </ul>
  340. </nav>
  341. </li>
  342. </ul>
  343. </nav>
  344. </li>
  345. <li class="md-nav__item md-nav__item--active md-nav__item--nested">
  346. <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" checked>
  347. <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
  348. Guides
  349. <span class="md-nav__icon md-icon"></span>
  350. </label>
  351. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="true">
  352. <label class="md-nav__title" for="__nav_3">
  353. <span class="md-nav__icon md-icon"></span>
  354. Guides
  355. </label>
  356. <ul class="md-nav__list" data-md-scrollfix>
  357. <li class="md-nav__item">
  358. <a href="../introduction/" class="md-nav__link">
  359. Introduction
  360. </a>
  361. </li>
  362. <li class="md-nav__item md-nav__item--nested">
  363. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3_2" >
  364. <label class="md-nav__link" for="__nav_3_2" id="__nav_3_2_label" tabindex="0">
  365. External Secrets
  366. <span class="md-nav__icon md-icon"></span>
  367. </label>
  368. <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_2_label" aria-expanded="false">
  369. <label class="md-nav__title" for="__nav_3_2">
  370. <span class="md-nav__icon md-icon"></span>
  371. External Secrets
  372. </label>
  373. <ul class="md-nav__list" data-md-scrollfix>
  374. <li class="md-nav__item">
  375. <a href="../all-keys-one-secret/" class="md-nav__link">
  376. Extract structured data
  377. </a>
  378. </li>
  379. <li class="md-nav__item">
  380. <a href="../getallsecrets/" class="md-nav__link">
  381. Find Secrets by Name or Metadata
  382. </a>
  383. </li>
  384. <li class="md-nav__item">
  385. <a href="../datafrom-rewrite/" class="md-nav__link">
  386. Rewriting Keys
  387. </a>
  388. </li>
  389. <li class="md-nav__item md-nav__item--nested">
  390. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3_2_4" >
  391. <label class="md-nav__link" for="__nav_3_2_4" id="__nav_3_2_4_label" tabindex="0">
  392. Advanced Templating
  393. <span class="md-nav__icon md-icon"></span>
  394. </label>
  395. <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_2_4_label" aria-expanded="false">
  396. <label class="md-nav__title" for="__nav_3_2_4">
  397. <span class="md-nav__icon md-icon"></span>
  398. Advanced Templating
  399. </label>
  400. <ul class="md-nav__list" data-md-scrollfix>
  401. <li class="md-nav__item">
  402. <a href="../templating/" class="md-nav__link">
  403. v2
  404. </a>
  405. </li>
  406. <li class="md-nav__item">
  407. <a href="../templating-v1/" class="md-nav__link">
  408. v1
  409. </a>
  410. </li>
  411. </ul>
  412. </nav>
  413. </li>
  414. <li class="md-nav__item">
  415. <a href="../common-k8s-secret-types/" class="md-nav__link">
  416. Kubernetes Secret Types
  417. </a>
  418. </li>
  419. <li class="md-nav__item">
  420. <a href="../ownership-deletion-policy/" class="md-nav__link">
  421. Lifecycle: ownership & deletion
  422. </a>
  423. </li>
  424. <li class="md-nav__item">
  425. <a href="../decoding-strategy/" class="md-nav__link">
  426. Decoding Strategies
  427. </a>
  428. </li>
  429. <li class="md-nav__item">
  430. <a href="../controller-class/" class="md-nav__link">
  431. Controller Classes
  432. </a>
  433. </li>
  434. </ul>
  435. </nav>
  436. </li>
  437. <li class="md-nav__item">
  438. <a href="../generator/" class="md-nav__link">
  439. Generators
  440. </a>
  441. </li>
  442. <li class="md-nav__item md-nav__item--active md-nav__item--nested">
  443. <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_4" checked>
  444. <label class="md-nav__link" for="__nav_3_4" id="__nav_3_4_label" tabindex="0">
  445. Operations
  446. <span class="md-nav__icon md-icon"></span>
  447. </label>
  448. <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_4_label" aria-expanded="true">
  449. <label class="md-nav__title" for="__nav_3_4">
  450. <span class="md-nav__icon md-icon"></span>
  451. Operations
  452. </label>
  453. <ul class="md-nav__list" data-md-scrollfix>
  454. <li class="md-nav__item md-nav__item--active">
  455. <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
  456. <label class="md-nav__link md-nav__link--active" for="__toc">
  457. Multi Tenancy
  458. <span class="md-nav__icon md-icon"></span>
  459. </label>
  460. <a href="./" class="md-nav__link md-nav__link--active">
  461. Multi Tenancy
  462. </a>
  463. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  464. <label class="md-nav__title" for="__toc">
  465. <span class="md-nav__icon md-icon"></span>
  466. Table of contents
  467. </label>
  468. <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
  469. <li class="md-nav__item">
  470. <a href="#shared-clustersecretstore" class="md-nav__link">
  471. Shared ClusterSecretStore
  472. </a>
  473. </li>
  474. <li class="md-nav__item">
  475. <a href="#managed-secretstore-per-namespace" class="md-nav__link">
  476. Managed SecretStore per Namespace
  477. </a>
  478. </li>
  479. <li class="md-nav__item">
  480. <a href="#eso-as-a-service" class="md-nav__link">
  481. ESO as a Service
  482. </a>
  483. </li>
  484. </ul>
  485. </nav>
  486. </li>
  487. <li class="md-nav__item">
  488. <a href="../security-best-practices/" class="md-nav__link">
  489. Security Best Practices
  490. </a>
  491. </li>
  492. <li class="md-nav__item">
  493. <a href="../threat-model/" class="md-nav__link">
  494. Threat Model
  495. </a>
  496. </li>
  497. <li class="md-nav__item">
  498. <a href="../v1beta1/" class="md-nav__link">
  499. Upgrading to v1beta1
  500. </a>
  501. </li>
  502. <li class="md-nav__item">
  503. <a href="../using-latest-image/" class="md-nav__link">
  504. Using Latest Image
  505. </a>
  506. </li>
  507. <li class="md-nav__item">
  508. <a href="../disable-cluster-features/" class="md-nav__link">
  509. Disable Cluster Features
  510. </a>
  511. </li>
  512. </ul>
  513. </nav>
  514. </li>
  515. </ul>
  516. </nav>
  517. </li>
  518. <li class="md-nav__item md-nav__item--nested">
  519. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_4" >
  520. <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
  521. Provider
  522. <span class="md-nav__icon md-icon"></span>
  523. </label>
  524. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
  525. <label class="md-nav__title" for="__nav_4">
  526. <span class="md-nav__icon md-icon"></span>
  527. Provider
  528. </label>
  529. <ul class="md-nav__list" data-md-scrollfix>
  530. <li class="md-nav__item">
  531. <a href="../../provider/aws-secrets-manager/" class="md-nav__link">
  532. AWS Secrets Manager
  533. </a>
  534. </li>
  535. <li class="md-nav__item">
  536. <a href="../../provider/aws-parameter-store/" class="md-nav__link">
  537. AWS Parameter Store
  538. </a>
  539. </li>
  540. <li class="md-nav__item">
  541. <a href="../../provider/azure-key-vault/" class="md-nav__link">
  542. Azure Key Vault
  543. </a>
  544. </li>
  545. <li class="md-nav__item">
  546. <a href="../../provider/conjur/" class="md-nav__link">
  547. CyberArk Conjur
  548. </a>
  549. </li>
  550. <li class="md-nav__item">
  551. <a href="../../provider/google-secrets-manager/" class="md-nav__link">
  552. Google Cloud Secret Manager
  553. </a>
  554. </li>
  555. <li class="md-nav__item">
  556. <a href="../../provider/hashicorp-vault/" class="md-nav__link">
  557. HashiCorp Vault
  558. </a>
  559. </li>
  560. <li class="md-nav__item">
  561. <a href="../../provider/kubernetes/" class="md-nav__link">
  562. Kubernetes
  563. </a>
  564. </li>
  565. <li class="md-nav__item">
  566. <a href="../../provider/ibm-secrets-manager/" class="md-nav__link">
  567. IBM Secrets Manager
  568. </a>
  569. </li>
  570. <li class="md-nav__item">
  571. <a href="../../provider/akeyless/" class="md-nav__link">
  572. Akeyless
  573. </a>
  574. </li>
  575. <li class="md-nav__item">
  576. <a href="../../provider/yandex-certificate-manager/" class="md-nav__link">
  577. Yandex Certificate Manager
  578. </a>
  579. </li>
  580. <li class="md-nav__item">
  581. <a href="../../provider/yandex-lockbox/" class="md-nav__link">
  582. Yandex Lockbox
  583. </a>
  584. </li>
  585. <li class="md-nav__item">
  586. <a href="../../provider/alibaba/" class="md-nav__link">
  587. Alibaba Cloud
  588. </a>
  589. </li>
  590. <li class="md-nav__item">
  591. <a href="../../provider/gitlab-variables/" class="md-nav__link">
  592. GitLab Variables
  593. </a>
  594. </li>
  595. <li class="md-nav__item">
  596. <a href="../../provider/oracle-vault/" class="md-nav__link">
  597. Oracle Vault
  598. </a>
  599. </li>
  600. <li class="md-nav__item">
  601. <a href="../../provider/1password-automation/" class="md-nav__link">
  602. 1Password Secrets Automation
  603. </a>
  604. </li>
  605. <li class="md-nav__item">
  606. <a href="../../provider/webhook/" class="md-nav__link">
  607. Webhook
  608. </a>
  609. </li>
  610. <li class="md-nav__item">
  611. <a href="../../provider/fake/" class="md-nav__link">
  612. Fake
  613. </a>
  614. </li>
  615. <li class="md-nav__item">
  616. <a href="../../provider/senhasegura-dsm/" class="md-nav__link">
  617. senhasegura DevOps Secrets Management (DSM)
  618. </a>
  619. </li>
  620. <li class="md-nav__item">
  621. <a href="../../provider/doppler/" class="md-nav__link">
  622. Doppler
  623. </a>
  624. </li>
  625. <li class="md-nav__item">
  626. <a href="../../provider/keeper-security/" class="md-nav__link">
  627. Keeper Security
  628. </a>
  629. </li>
  630. <li class="md-nav__item">
  631. <a href="../../provider/cloak/" class="md-nav__link">
  632. Cloak End 2 End Encrypted Secrets
  633. </a>
  634. </li>
  635. <li class="md-nav__item">
  636. <a href="../../provider/scaleway/" class="md-nav__link">
  637. Scaleway
  638. </a>
  639. </li>
  640. <li class="md-nav__item">
  641. <a href="../../provider/delinea/" class="md-nav__link">
  642. Delinea
  643. </a>
  644. </li>
  645. </ul>
  646. </nav>
  647. </li>
  648. <li class="md-nav__item md-nav__item--nested">
  649. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_5" >
  650. <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
  651. Examples
  652. <span class="md-nav__icon md-icon"></span>
  653. </label>
  654. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
  655. <label class="md-nav__title" for="__nav_5">
  656. <span class="md-nav__icon md-icon"></span>
  657. Examples
  658. </label>
  659. <ul class="md-nav__list" data-md-scrollfix>
  660. <li class="md-nav__item">
  661. <a href="../../examples/gitops-using-fluxcd/" class="md-nav__link">
  662. FluxCD
  663. </a>
  664. </li>
  665. <li class="md-nav__item">
  666. <a href="../../examples/anchore-engine-credentials/" class="md-nav__link">
  667. Anchore Engine
  668. </a>
  669. </li>
  670. <li class="md-nav__item">
  671. <a href="../../examples/jenkins-kubernetes-credentials/" class="md-nav__link">
  672. Jenkins
  673. </a>
  674. </li>
  675. <li class="md-nav__item">
  676. <a href="../../examples/bitwarden/" class="md-nav__link">
  677. BitWarden
  678. </a>
  679. </li>
  680. </ul>
  681. </nav>
  682. </li>
  683. <li class="md-nav__item md-nav__item--nested">
  684. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_6" >
  685. <label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
  686. Community
  687. <span class="md-nav__icon md-icon"></span>
  688. </label>
  689. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
  690. <label class="md-nav__title" for="__nav_6">
  691. <span class="md-nav__icon md-icon"></span>
  692. Community
  693. </label>
  694. <ul class="md-nav__list" data-md-scrollfix>
  695. <li class="md-nav__item md-nav__item--nested">
  696. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_6_1" >
  697. <label class="md-nav__link" for="__nav_6_1" id="__nav_6_1_label" tabindex="0">
  698. Contributing
  699. <span class="md-nav__icon md-icon"></span>
  700. </label>
  701. <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_1_label" aria-expanded="false">
  702. <label class="md-nav__title" for="__nav_6_1">
  703. <span class="md-nav__icon md-icon"></span>
  704. Contributing
  705. </label>
  706. <ul class="md-nav__list" data-md-scrollfix>
  707. <li class="md-nav__item">
  708. <a href="../../contributing/devguide/" class="md-nav__link">
  709. Developer guide
  710. </a>
  711. </li>
  712. <li class="md-nav__item">
  713. <a href="../../contributing/process/" class="md-nav__link">
  714. Contributing Process
  715. </a>
  716. </li>
  717. <li class="md-nav__item">
  718. <a href="../../contributing/release/" class="md-nav__link">
  719. Release Process
  720. </a>
  721. </li>
  722. <li class="md-nav__item">
  723. <a href="../../contributing/coc/" class="md-nav__link">
  724. Code of Conduct
  725. </a>
  726. </li>
  727. <li class="md-nav__item">
  728. <a href="../../contributing/roadmap/" class="md-nav__link">
  729. Roadmap
  730. </a>
  731. </li>
  732. </ul>
  733. </nav>
  734. </li>
  735. <li class="md-nav__item md-nav__item--nested">
  736. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_6_2" >
  737. <label class="md-nav__link" for="__nav_6_2" id="__nav_6_2_label" tabindex="0">
  738. External Resources
  739. <span class="md-nav__icon md-icon"></span>
  740. </label>
  741. <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_2_label" aria-expanded="false">
  742. <label class="md-nav__title" for="__nav_6_2">
  743. <span class="md-nav__icon md-icon"></span>
  744. External Resources
  745. </label>
  746. <ul class="md-nav__list" data-md-scrollfix>
  747. <li class="md-nav__item">
  748. <a href="../../eso-talks/" class="md-nav__link">
  749. Talks
  750. </a>
  751. </li>
  752. <li class="md-nav__item">
  753. <a href="../../eso-demos/" class="md-nav__link">
  754. Demos
  755. </a>
  756. </li>
  757. <li class="md-nav__item">
  758. <a href="../../eso-blogs/" class="md-nav__link">
  759. Blogs
  760. </a>
  761. </li>
  762. </ul>
  763. </nav>
  764. </li>
  765. </ul>
  766. </nav>
  767. </li>
  768. </ul>
  769. </nav>
  770. </div>
  771. </div>
  772. </div>
  773. <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
  774. <div class="md-sidebar__scrollwrap">
  775. <div class="md-sidebar__inner">
  776. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  777. <label class="md-nav__title" for="__toc">
  778. <span class="md-nav__icon md-icon"></span>
  779. Table of contents
  780. </label>
  781. <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
  782. <li class="md-nav__item">
  783. <a href="#shared-clustersecretstore" class="md-nav__link">
  784. Shared ClusterSecretStore
  785. </a>
  786. </li>
  787. <li class="md-nav__item">
  788. <a href="#managed-secretstore-per-namespace" class="md-nav__link">
  789. Managed SecretStore per Namespace
  790. </a>
  791. </li>
  792. <li class="md-nav__item">
  793. <a href="#eso-as-a-service" class="md-nav__link">
  794. ESO as a Service
  795. </a>
  796. </li>
  797. </ul>
  798. </nav>
  799. </div>
  800. </div>
  801. </div>
  802. <div class="md-content" data-md-component="content">
  803. <article class="md-content__inner md-typeset">
  804. <h1>Multi Tenancy</h1>
  805. <p>External Secrets Operator provides different modes of operation to fulfill
  806. organizational needs. This guide outlines the flexibility of ESO and should give
  807. you a first impression of how you can employ this operator in your organization.</p>
  808. <p>For a multi-tenant deployment you should first examine your organizational
  809. structure:</p>
  810. <ol>
  811. <li>what roles (i.e. <em>Application Developers</em>, <em>Cluster Admins</em>, ...) do you have
  812. in your organization,</li>
  813. <li>what responsibilities do they have and</li>
  814. <li>how does that map to Kubernetes RBAC roles.</li>
  815. </ol>
  816. <p>Further, you should examine how your external API provider manages access
  817. control for your secrets. Can you limit access by secret names (e.g.
  818. <code>db/dev/*</code>)? Or only on a bucket level? Please keep in mind that not all
  819. external APIs provide fine-grained access management for secrets.</p>
  820. <p><strong>Note:</strong> The following examples should <strong>not</strong> be considered as best practice
  821. but rather as a example to show how to combine different mechanics and
  822. techniques for tenant isolation.</p>
  823. <h3 id="shared-clustersecretstore">Shared ClusterSecretStore</h3>
  824. <p><img alt="Shared CSS" src="../../pictures/diagrams-multi-tenancy-shared.png" /></p>
  825. <p>A Cluster Administrator deploys a <code>ClusterSecretStore</code> (CSS) and manages access
  826. to the external API. The CSS is shared by all tenants within the cluster.
  827. Application Developers do reference it in a <code>ExternalSecret</code> but can not create
  828. a ClusterSecretStores or SecretStores on their own. Now all application
  829. developers have access to all the secrets. You probably want to limit access to
  830. certain keys or prefixes that should be used. ESO does not provide a mechanic
  831. to limit access to certain keys per namespace. More advanced validation should be
  832. done with an Admission Webhook, e.g. with <a href="https://kyverno.io/">Kyverno</a> or
  833. <a href="https://www.openpolicyagent.org/">Open Policy Agent</a>).</p>
  834. <p>This setup suites well if you have one central bucket that contains all of your
  835. secrets and your Cluster Administrators should manage access to it. This setup
  836. is very simple but does not scale very well.</p>
  837. <h3 id="managed-secretstore-per-namespace">Managed SecretStore per Namespace</h3>
  838. <p><img alt="Shared CSS" src="../../pictures/diagrams-multi-tenancy-managed-store.png" /></p>
  839. <p>Cluster Administrators manage one or multiple <code>SecretStores</code> per Namespace. Each
  840. SecretStore uses it's own <em>role</em> that limits access to a small set of keys. The
  841. peculiarity of this is approach is, that <strong>access is actually managed by the
  842. external API</strong> which provides the roles. The Cluster Administrator does just the
  843. wiring. This approach may be desirable if you have an external entity - let's
  844. call it <strong>Secret Administrator</strong> - that manages access and lifecycle of the
  845. secrets.</p>
  846. <h3 id="eso-as-a-service">ESO as a Service</h3>
  847. <p><img alt="Shared CSS" src="../../pictures/diagrams-multi-tenancy-self-service.png" /></p>
  848. <p>Every namespace is self-contained. Application developers manage <code>SecretStore</code>,
  849. <code>ExternalSecret</code> and secret infrastructure on their own. Cluster Administrators
  850. <em>just</em> provide the External Secrets Operator as a service.</p>
  851. <p>This makes sense if application developers should be completely autonomous while
  852. a central team provides common services.</p>
  853. </article>
  854. </div>
  855. </div>
  856. </main>
  857. <footer class="md-footer">
  858. <div class="md-footer-meta md-typeset">
  859. <div class="md-footer-meta__inner md-grid">
  860. <div class="md-copyright">
  861. <div class="md-copyright__highlight">
  862. &copy; 2023 The external-secrets Authors.<br/>
  863. &copy; 2023 The Linux Foundation. All rights reserved.<br/><br/>
  864. The Linux Foundation has registered trademarks and uses trademarks.<br/>
  865. For a list of trademarks of The Linux Foundation, please see our <a href="https://www.linuxfoundation.org/trademark-usage/">Trademark Usage page</a>.
  866. </div>
  867. Made with
  868. <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
  869. Material for MkDocs
  870. </a>
  871. </div>
  872. </div>
  873. </div>
  874. </footer>
  875. </div>
  876. <div class="md-dialog" data-md-component="dialog">
  877. <div class="md-dialog__inner md-typeset"></div>
  878. </div>
  879. <script id="__config" type="application/json">{"base": "../..", "features": ["navigation.tabs", "navigation.indexes", "navigation.expand"], "search": "../../assets/javascripts/workers/search.208ed371.min.js", "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": {"provider": "mike"}}</script>
  880. <script src="../../assets/javascripts/bundle.fac441b0.min.js"></script>
  881. </body>
  882. </html>