index.html 110 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529
  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="../device42/">
  7. <link rel="next" href="../hashicorp-vault/">
  8. <link rel="icon" href="../../pictures/eso-round-logo.svg">
  9. <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.14">
  10. <title>Google Cloud Secret Manager - External Secrets Operator</title>
  11. <link rel="stylesheet" href="../../assets/stylesheets/main.342714a4.min.css">
  12. <link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
  13. <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  14. <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">
  15. <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
  16. <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>
  17. <script id="__analytics">function __md_analytics(){function e(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],e("js",new Date),e("config","G-QP38TD8K7V"),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","G-QP38TD8K7V",{page_path:t.pathname})}))}));var t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtag/js?id=G-QP38TD8K7V",document.getElementById("__analytics").insertAdjacentElement("afterEnd",t)}</script>
  18. <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script>
  19. </head>
  20. <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
  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="#authentication" 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]"),base=new URL("../.."),outdated=__md_get("__outdated",sessionStorage,base);!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. <img src="../../pictures/eso-round-logo.svg" alt="logo">
  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 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></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. Google Cloud Secret Manager
  60. </span>
  61. </div>
  62. </div>
  63. </div>
  64. <form class="md-header__option" data-md-component="palette">
  65. <input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0">
  66. <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
  67. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
  68. </label>
  69. <input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
  70. <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
  71. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
  72. </label>
  73. </form>
  74. <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>
  75. <label class="md-header__button md-icon" for="__search">
  76. <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>
  77. </label>
  78. <div class="md-search" data-md-component="search" role="dialog">
  79. <label class="md-search__overlay" for="__search"></label>
  80. <div class="md-search__inner" role="search">
  81. <form class="md-search__form" name="search">
  82. <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>
  83. <label class="md-search__icon md-icon" for="__search">
  84. <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>
  85. <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>
  86. </label>
  87. <nav class="md-search__options" aria-label="Search">
  88. <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
  89. <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>
  90. </button>
  91. </nav>
  92. </form>
  93. <div class="md-search__output">
  94. <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
  95. <div class="md-search-result" data-md-component="search-result">
  96. <div class="md-search-result__meta">
  97. Initializing search
  98. </div>
  99. <ol class="md-search-result__list" role="presentation"></ol>
  100. </div>
  101. </div>
  102. </div>
  103. </div>
  104. </div>
  105. <div class="md-header__source">
  106. <a href="https://github.com/external-secrets/external-secrets" title="Go to repository" class="md-source" data-md-component="source">
  107. <div class="md-source__icon md-icon">
  108. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 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 2024 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.81"/></svg>
  109. </div>
  110. <div class="md-source__repository">
  111. External Secrets Operator
  112. </div>
  113. </a>
  114. </div>
  115. </nav>
  116. </header>
  117. <div class="md-container" data-md-component="container">
  118. <nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
  119. <div class="md-grid">
  120. <ul class="md-tabs__list">
  121. <li class="md-tabs__item">
  122. <a href="../.." class="md-tabs__link">
  123. Introduction
  124. </a>
  125. </li>
  126. <li class="md-tabs__item">
  127. <a href="../../api/components/" class="md-tabs__link">
  128. API
  129. </a>
  130. </li>
  131. <li class="md-tabs__item">
  132. <a href="../../guides/introduction/" class="md-tabs__link">
  133. Guides
  134. </a>
  135. </li>
  136. <li class="md-tabs__item md-tabs__item--active">
  137. <a href="../aws-secrets-manager/" class="md-tabs__link">
  138. Provider
  139. </a>
  140. </li>
  141. <li class="md-tabs__item">
  142. <a href="../../examples/gitops-using-fluxcd/" class="md-tabs__link">
  143. Examples
  144. </a>
  145. </li>
  146. <li class="md-tabs__item">
  147. <a href="../../contributing/devguide/" class="md-tabs__link">
  148. Community
  149. </a>
  150. </li>
  151. </ul>
  152. </div>
  153. </nav>
  154. <main class="md-main" data-md-component="main">
  155. <div class="md-main__inner md-grid">
  156. <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
  157. <div class="md-sidebar__scrollwrap">
  158. <div class="md-sidebar__inner">
  159. <nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
  160. <label class="md-nav__title" for="__drawer">
  161. <a href="../.." title="External Secrets Operator" class="md-nav__button md-logo" aria-label="External Secrets Operator" data-md-component="logo">
  162. <img src="../../pictures/eso-round-logo.svg" alt="logo">
  163. </a>
  164. External Secrets Operator
  165. </label>
  166. <div class="md-nav__source">
  167. <a href="https://github.com/external-secrets/external-secrets" title="Go to repository" class="md-source" data-md-component="source">
  168. <div class="md-source__icon md-icon">
  169. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 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 2024 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.81"/></svg>
  170. </div>
  171. <div class="md-source__repository">
  172. External Secrets Operator
  173. </div>
  174. </a>
  175. </div>
  176. <ul class="md-nav__list" data-md-scrollfix>
  177. <li class="md-nav__item md-nav__item--nested">
  178. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_1" >
  179. <div class="md-nav__link md-nav__container">
  180. <a href="../.." class="md-nav__link ">
  181. <span class="md-ellipsis">
  182. Introduction
  183. </span>
  184. </a>
  185. <label class="md-nav__link " for="__nav_1" id="__nav_1_label" tabindex="0">
  186. <span class="md-nav__icon md-icon"></span>
  187. </label>
  188. </div>
  189. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_1_label" aria-expanded="false">
  190. <label class="md-nav__title" for="__nav_1">
  191. <span class="md-nav__icon md-icon"></span>
  192. Introduction
  193. </label>
  194. <ul class="md-nav__list" data-md-scrollfix>
  195. <li class="md-nav__item">
  196. <a href="../../introduction/overview/" class="md-nav__link">
  197. <span class="md-ellipsis">
  198. Overview
  199. </span>
  200. </a>
  201. </li>
  202. <li class="md-nav__item">
  203. <a href="../../introduction/glossary/" class="md-nav__link">
  204. <span class="md-ellipsis">
  205. Glossary
  206. </span>
  207. </a>
  208. </li>
  209. <li class="md-nav__item">
  210. <a href="../../introduction/prerequisites/" class="md-nav__link">
  211. <span class="md-ellipsis">
  212. Prerequisites
  213. </span>
  214. </a>
  215. </li>
  216. <li class="md-nav__item">
  217. <a href="../../introduction/getting-started/" class="md-nav__link">
  218. <span class="md-ellipsis">
  219. Getting started
  220. </span>
  221. </a>
  222. </li>
  223. <li class="md-nav__item">
  224. <a href="../../introduction/faq/" class="md-nav__link">
  225. <span class="md-ellipsis">
  226. FAQ
  227. </span>
  228. </a>
  229. </li>
  230. <li class="md-nav__item">
  231. <a href="../../introduction/stability-support/" class="md-nav__link">
  232. <span class="md-ellipsis">
  233. Stability and Support
  234. </span>
  235. </a>
  236. </li>
  237. <li class="md-nav__item">
  238. <a href="../../introduction/deprecation-policy/" class="md-nav__link">
  239. <span class="md-ellipsis">
  240. Deprecation Policy
  241. </span>
  242. </a>
  243. </li>
  244. </ul>
  245. </nav>
  246. </li>
  247. <li class="md-nav__item md-nav__item--nested">
  248. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2" >
  249. <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
  250. <span class="md-ellipsis">
  251. API
  252. </span>
  253. <span class="md-nav__icon md-icon"></span>
  254. </label>
  255. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
  256. <label class="md-nav__title" for="__nav_2">
  257. <span class="md-nav__icon md-icon"></span>
  258. API
  259. </label>
  260. <ul class="md-nav__list" data-md-scrollfix>
  261. <li class="md-nav__item">
  262. <a href="../../api/components/" class="md-nav__link">
  263. <span class="md-ellipsis">
  264. Components
  265. </span>
  266. </a>
  267. </li>
  268. <li class="md-nav__item md-nav__item--nested">
  269. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2_2" >
  270. <label class="md-nav__link" for="__nav_2_2" id="__nav_2_2_label" tabindex="0">
  271. <span class="md-ellipsis">
  272. Core Resources
  273. </span>
  274. <span class="md-nav__icon md-icon"></span>
  275. </label>
  276. <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_2_label" aria-expanded="false">
  277. <label class="md-nav__title" for="__nav_2_2">
  278. <span class="md-nav__icon md-icon"></span>
  279. Core Resources
  280. </label>
  281. <ul class="md-nav__list" data-md-scrollfix>
  282. <li class="md-nav__item">
  283. <a href="../../api/externalsecret/" class="md-nav__link">
  284. <span class="md-ellipsis">
  285. ExternalSecret
  286. </span>
  287. </a>
  288. </li>
  289. <li class="md-nav__item">
  290. <a href="../../api/secretstore/" class="md-nav__link">
  291. <span class="md-ellipsis">
  292. SecretStore
  293. </span>
  294. </a>
  295. </li>
  296. <li class="md-nav__item">
  297. <a href="../../api/clustersecretstore/" class="md-nav__link">
  298. <span class="md-ellipsis">
  299. ClusterSecretStore
  300. </span>
  301. </a>
  302. </li>
  303. <li class="md-nav__item">
  304. <a href="../../api/clusterexternalsecret/" class="md-nav__link">
  305. <span class="md-ellipsis">
  306. ClusterExternalSecret
  307. </span>
  308. </a>
  309. </li>
  310. <li class="md-nav__item">
  311. <a href="../../api/clusterpushsecret/" class="md-nav__link">
  312. <span class="md-ellipsis">
  313. ClusterPushSecret
  314. </span>
  315. </a>
  316. </li>
  317. <li class="md-nav__item">
  318. <a href="../../api/pushsecret/" class="md-nav__link">
  319. <span class="md-ellipsis">
  320. PushSecret
  321. </span>
  322. </a>
  323. </li>
  324. </ul>
  325. </nav>
  326. </li>
  327. <li class="md-nav__item md-nav__item--nested">
  328. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2_3" >
  329. <div class="md-nav__link md-nav__container">
  330. <a href="../../api/generator/" class="md-nav__link ">
  331. <span class="md-ellipsis">
  332. Generators
  333. </span>
  334. </a>
  335. <label class="md-nav__link " for="__nav_2_3" id="__nav_2_3_label" tabindex="0">
  336. <span class="md-nav__icon md-icon"></span>
  337. </label>
  338. </div>
  339. <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_3_label" aria-expanded="false">
  340. <label class="md-nav__title" for="__nav_2_3">
  341. <span class="md-nav__icon md-icon"></span>
  342. Generators
  343. </label>
  344. <ul class="md-nav__list" data-md-scrollfix>
  345. <li class="md-nav__item">
  346. <a href="../../api/generator/acr/" class="md-nav__link">
  347. <span class="md-ellipsis">
  348. Azure Container Registry
  349. </span>
  350. </a>
  351. </li>
  352. <li class="md-nav__item">
  353. <a href="../../api/generator/ecr/" class="md-nav__link">
  354. <span class="md-ellipsis">
  355. AWS Elastic Container Registry
  356. </span>
  357. </a>
  358. </li>
  359. <li class="md-nav__item">
  360. <a href="../../api/generator/sts/" class="md-nav__link">
  361. <span class="md-ellipsis">
  362. AWS STS Session Token
  363. </span>
  364. </a>
  365. </li>
  366. <li class="md-nav__item">
  367. <a href="../../api/generator/cluster/" class="md-nav__link">
  368. <span class="md-ellipsis">
  369. Cluster Generator
  370. </span>
  371. </a>
  372. </li>
  373. <li class="md-nav__item">
  374. <a href="../../api/generator/gcr/" class="md-nav__link">
  375. <span class="md-ellipsis">
  376. Google Container Registry
  377. </span>
  378. </a>
  379. </li>
  380. <li class="md-nav__item">
  381. <a href="../../api/generator/quay/" class="md-nav__link">
  382. <span class="md-ellipsis">
  383. Quay
  384. </span>
  385. </a>
  386. </li>
  387. <li class="md-nav__item">
  388. <a href="../../api/generator/vault/" class="md-nav__link">
  389. <span class="md-ellipsis">
  390. Vault Dynamic Secret
  391. </span>
  392. </a>
  393. </li>
  394. <li class="md-nav__item">
  395. <a href="../../api/generator/password/" class="md-nav__link">
  396. <span class="md-ellipsis">
  397. Password
  398. </span>
  399. </a>
  400. </li>
  401. <li class="md-nav__item">
  402. <a href="../../api/generator/fake/" class="md-nav__link">
  403. <span class="md-ellipsis">
  404. Fake
  405. </span>
  406. </a>
  407. </li>
  408. <li class="md-nav__item">
  409. <a href="../../api/generator/webhook/" class="md-nav__link">
  410. <span class="md-ellipsis">
  411. Webhook
  412. </span>
  413. </a>
  414. </li>
  415. <li class="md-nav__item">
  416. <a href="../../api/generator/github/" class="md-nav__link">
  417. <span class="md-ellipsis">
  418. Github
  419. </span>
  420. </a>
  421. </li>
  422. <li class="md-nav__item">
  423. <a href="../../api/generator/uuid/" class="md-nav__link">
  424. <span class="md-ellipsis">
  425. UUID
  426. </span>
  427. </a>
  428. </li>
  429. </ul>
  430. </nav>
  431. </li>
  432. <li class="md-nav__item md-nav__item--nested">
  433. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2_4" >
  434. <label class="md-nav__link" for="__nav_2_4" id="__nav_2_4_label" tabindex="0">
  435. <span class="md-ellipsis">
  436. Reference Docs
  437. </span>
  438. <span class="md-nav__icon md-icon"></span>
  439. </label>
  440. <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_4_label" aria-expanded="false">
  441. <label class="md-nav__title" for="__nav_2_4">
  442. <span class="md-nav__icon md-icon"></span>
  443. Reference Docs
  444. </label>
  445. <ul class="md-nav__list" data-md-scrollfix>
  446. <li class="md-nav__item">
  447. <a href="../../api/spec/" class="md-nav__link">
  448. <span class="md-ellipsis">
  449. API specification
  450. </span>
  451. </a>
  452. </li>
  453. <li class="md-nav__item">
  454. <a href="../../api/controller-options/" class="md-nav__link">
  455. <span class="md-ellipsis">
  456. Controller Options
  457. </span>
  458. </a>
  459. </li>
  460. <li class="md-nav__item">
  461. <a href="../../api/metrics/" class="md-nav__link">
  462. <span class="md-ellipsis">
  463. Metrics
  464. </span>
  465. </a>
  466. </li>
  467. </ul>
  468. </nav>
  469. </li>
  470. </ul>
  471. </nav>
  472. </li>
  473. <li class="md-nav__item md-nav__item--nested">
  474. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3" >
  475. <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
  476. <span class="md-ellipsis">
  477. Guides
  478. </span>
  479. <span class="md-nav__icon md-icon"></span>
  480. </label>
  481. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
  482. <label class="md-nav__title" for="__nav_3">
  483. <span class="md-nav__icon md-icon"></span>
  484. Guides
  485. </label>
  486. <ul class="md-nav__list" data-md-scrollfix>
  487. <li class="md-nav__item">
  488. <a href="../../guides/introduction/" class="md-nav__link">
  489. <span class="md-ellipsis">
  490. Introduction
  491. </span>
  492. </a>
  493. </li>
  494. <li class="md-nav__item md-nav__item--nested">
  495. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3_2" >
  496. <label class="md-nav__link" for="__nav_3_2" id="__nav_3_2_label" tabindex="0">
  497. <span class="md-ellipsis">
  498. External Secrets
  499. </span>
  500. <span class="md-nav__icon md-icon"></span>
  501. </label>
  502. <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_2_label" aria-expanded="false">
  503. <label class="md-nav__title" for="__nav_3_2">
  504. <span class="md-nav__icon md-icon"></span>
  505. External Secrets
  506. </label>
  507. <ul class="md-nav__list" data-md-scrollfix>
  508. <li class="md-nav__item">
  509. <a href="../../guides/all-keys-one-secret/" class="md-nav__link">
  510. <span class="md-ellipsis">
  511. Extract structured data
  512. </span>
  513. </a>
  514. </li>
  515. <li class="md-nav__item">
  516. <a href="../../guides/getallsecrets/" class="md-nav__link">
  517. <span class="md-ellipsis">
  518. Find Secrets by Name or Metadata
  519. </span>
  520. </a>
  521. </li>
  522. <li class="md-nav__item">
  523. <a href="../../guides/datafrom-rewrite/" class="md-nav__link">
  524. <span class="md-ellipsis">
  525. Rewriting Keys
  526. </span>
  527. </a>
  528. </li>
  529. <li class="md-nav__item md-nav__item--nested">
  530. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3_2_4" >
  531. <label class="md-nav__link" for="__nav_3_2_4" id="__nav_3_2_4_label" tabindex="0">
  532. <span class="md-ellipsis">
  533. Advanced Templating
  534. </span>
  535. <span class="md-nav__icon md-icon"></span>
  536. </label>
  537. <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_2_4_label" aria-expanded="false">
  538. <label class="md-nav__title" for="__nav_3_2_4">
  539. <span class="md-nav__icon md-icon"></span>
  540. Advanced Templating
  541. </label>
  542. <ul class="md-nav__list" data-md-scrollfix>
  543. <li class="md-nav__item">
  544. <a href="../../guides/templating/" class="md-nav__link">
  545. <span class="md-ellipsis">
  546. v2
  547. </span>
  548. </a>
  549. </li>
  550. <li class="md-nav__item">
  551. <a href="../../guides/templating-v1/" class="md-nav__link">
  552. <span class="md-ellipsis">
  553. v1
  554. </span>
  555. </a>
  556. </li>
  557. </ul>
  558. </nav>
  559. </li>
  560. <li class="md-nav__item">
  561. <a href="../../guides/common-k8s-secret-types/" class="md-nav__link">
  562. <span class="md-ellipsis">
  563. Kubernetes Secret Types
  564. </span>
  565. </a>
  566. </li>
  567. <li class="md-nav__item">
  568. <a href="../../guides/ownership-deletion-policy/" class="md-nav__link">
  569. <span class="md-ellipsis">
  570. Lifecycle: ownership & deletion
  571. </span>
  572. </a>
  573. </li>
  574. <li class="md-nav__item">
  575. <a href="../../guides/decoding-strategy/" class="md-nav__link">
  576. <span class="md-ellipsis">
  577. Decoding Strategies
  578. </span>
  579. </a>
  580. </li>
  581. <li class="md-nav__item">
  582. <a href="../../guides/controller-class/" class="md-nav__link">
  583. <span class="md-ellipsis">
  584. Controller Classes
  585. </span>
  586. </a>
  587. </li>
  588. </ul>
  589. </nav>
  590. </li>
  591. <li class="md-nav__item">
  592. <a href="../../guides/generator/" class="md-nav__link">
  593. <span class="md-ellipsis">
  594. Generators
  595. </span>
  596. </a>
  597. </li>
  598. <li class="md-nav__item">
  599. <a href="../../guides/pushsecrets/" class="md-nav__link">
  600. <span class="md-ellipsis">
  601. Push Secrets
  602. </span>
  603. </a>
  604. </li>
  605. <li class="md-nav__item md-nav__item--nested">
  606. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3_5" >
  607. <label class="md-nav__link" for="__nav_3_5" id="__nav_3_5_label" tabindex="0">
  608. <span class="md-ellipsis">
  609. Operations
  610. </span>
  611. <span class="md-nav__icon md-icon"></span>
  612. </label>
  613. <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_5_label" aria-expanded="false">
  614. <label class="md-nav__title" for="__nav_3_5">
  615. <span class="md-nav__icon md-icon"></span>
  616. Operations
  617. </label>
  618. <ul class="md-nav__list" data-md-scrollfix>
  619. <li class="md-nav__item">
  620. <a href="../../guides/multi-tenancy/" class="md-nav__link">
  621. <span class="md-ellipsis">
  622. Multi Tenancy
  623. </span>
  624. </a>
  625. </li>
  626. <li class="md-nav__item">
  627. <a href="../../guides/security-best-practices/" class="md-nav__link">
  628. <span class="md-ellipsis">
  629. Security Best Practices
  630. </span>
  631. </a>
  632. </li>
  633. <li class="md-nav__item">
  634. <a href="../../guides/threat-model/" class="md-nav__link">
  635. <span class="md-ellipsis">
  636. Threat Model
  637. </span>
  638. </a>
  639. </li>
  640. <li class="md-nav__item">
  641. <a href="../../guides/v1beta1/" class="md-nav__link">
  642. <span class="md-ellipsis">
  643. Upgrading to v1beta1
  644. </span>
  645. </a>
  646. </li>
  647. <li class="md-nav__item">
  648. <a href="../../guides/using-latest-image/" class="md-nav__link">
  649. <span class="md-ellipsis">
  650. Using Latest Image
  651. </span>
  652. </a>
  653. </li>
  654. <li class="md-nav__item">
  655. <a href="../../guides/disable-cluster-features/" class="md-nav__link">
  656. <span class="md-ellipsis">
  657. Disable Cluster Features
  658. </span>
  659. </a>
  660. </li>
  661. </ul>
  662. </nav>
  663. </li>
  664. <li class="md-nav__item md-nav__item--nested">
  665. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3_6" >
  666. <label class="md-nav__link" for="__nav_3_6" id="__nav_3_6_label" tabindex="0">
  667. <span class="md-ellipsis">
  668. Tooling
  669. </span>
  670. <span class="md-nav__icon md-icon"></span>
  671. </label>
  672. <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_6_label" aria-expanded="false">
  673. <label class="md-nav__title" for="__nav_3_6">
  674. <span class="md-nav__icon md-icon"></span>
  675. Tooling
  676. </label>
  677. <ul class="md-nav__list" data-md-scrollfix>
  678. <li class="md-nav__item">
  679. <a href="../../guides/using-esoctl-tool/" class="md-nav__link">
  680. <span class="md-ellipsis">
  681. Using the esoctl tool
  682. </span>
  683. </a>
  684. </li>
  685. </ul>
  686. </nav>
  687. </li>
  688. </ul>
  689. </nav>
  690. </li>
  691. <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
  692. <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" checked>
  693. <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="">
  694. <span class="md-ellipsis">
  695. Provider
  696. </span>
  697. <span class="md-nav__icon md-icon"></span>
  698. </label>
  699. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="true">
  700. <label class="md-nav__title" for="__nav_4">
  701. <span class="md-nav__icon md-icon"></span>
  702. Provider
  703. </label>
  704. <ul class="md-nav__list" data-md-scrollfix>
  705. <li class="md-nav__item">
  706. <a href="../aws-secrets-manager/" class="md-nav__link">
  707. <span class="md-ellipsis">
  708. AWS Secrets Manager
  709. </span>
  710. </a>
  711. </li>
  712. <li class="md-nav__item">
  713. <a href="../aws-parameter-store/" class="md-nav__link">
  714. <span class="md-ellipsis">
  715. AWS Parameter Store
  716. </span>
  717. </a>
  718. </li>
  719. <li class="md-nav__item">
  720. <a href="../azure-key-vault/" class="md-nav__link">
  721. <span class="md-ellipsis">
  722. Azure Key Vault
  723. </span>
  724. </a>
  725. </li>
  726. <li class="md-nav__item">
  727. <a href="../beyondtrust/" class="md-nav__link">
  728. <span class="md-ellipsis">
  729. BeyondTrust
  730. </span>
  731. </a>
  732. </li>
  733. <li class="md-nav__item">
  734. <a href="../bitwarden-secrets-manager/" class="md-nav__link">
  735. <span class="md-ellipsis">
  736. Bitwarden Secrets Manager
  737. </span>
  738. </a>
  739. </li>
  740. <li class="md-nav__item">
  741. <a href="../chef/" class="md-nav__link">
  742. <span class="md-ellipsis">
  743. Chef
  744. </span>
  745. </a>
  746. </li>
  747. <li class="md-nav__item">
  748. <a href="../cloudru/" class="md-nav__link">
  749. <span class="md-ellipsis">
  750. Cloud.ru Secret Manager
  751. </span>
  752. </a>
  753. </li>
  754. <li class="md-nav__item">
  755. <a href="../conjur/" class="md-nav__link">
  756. <span class="md-ellipsis">
  757. CyberArk Conjur
  758. </span>
  759. </a>
  760. </li>
  761. <li class="md-nav__item">
  762. <a href="../device42/" class="md-nav__link">
  763. <span class="md-ellipsis">
  764. Device42
  765. </span>
  766. </a>
  767. </li>
  768. <li class="md-nav__item md-nav__item--active">
  769. <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
  770. <label class="md-nav__link md-nav__link--active" for="__toc">
  771. <span class="md-ellipsis">
  772. Google Cloud Secret Manager
  773. </span>
  774. <span class="md-nav__icon md-icon"></span>
  775. </label>
  776. <a href="./" class="md-nav__link md-nav__link--active">
  777. <span class="md-ellipsis">
  778. Google Cloud Secret Manager
  779. </span>
  780. </a>
  781. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  782. <label class="md-nav__title" for="__toc">
  783. <span class="md-nav__icon md-icon"></span>
  784. Table of contents
  785. </label>
  786. <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
  787. <li class="md-nav__item">
  788. <a href="#authentication" class="md-nav__link">
  789. <span class="md-ellipsis">
  790. Authentication
  791. </span>
  792. </a>
  793. <nav class="md-nav" aria-label="Authentication">
  794. <ul class="md-nav__list">
  795. <li class="md-nav__item">
  796. <a href="#workload-identity-federation" class="md-nav__link">
  797. <span class="md-ellipsis">
  798. Workload Identity Federation
  799. </span>
  800. </a>
  801. <nav class="md-nav" aria-label="Workload Identity Federation">
  802. <ul class="md-nav__list">
  803. <li class="md-nav__item">
  804. <a href="#prerequisites" class="md-nav__link">
  805. <span class="md-ellipsis">
  806. Prerequisites
  807. </span>
  808. </a>
  809. </li>
  810. <li class="md-nav__item">
  811. <a href="#using-a-kubernetes-service-account-as-a-gcp-iam-principal" class="md-nav__link">
  812. <span class="md-ellipsis">
  813. Using a Kubernetes service account as a GCP IAM principal
  814. </span>
  815. </a>
  816. </li>
  817. <li class="md-nav__item">
  818. <a href="#linking-a-kubernetes-service-account-to-a-gcp-service-account" class="md-nav__link">
  819. <span class="md-ellipsis">
  820. Linking a Kubernetes service account to a GCP service account
  821. </span>
  822. </a>
  823. </li>
  824. <li class="md-nav__item">
  825. <a href="#authorizing-the-core-controller-pod" class="md-nav__link">
  826. <span class="md-ellipsis">
  827. Authorizing the Core Controller Pod
  828. </span>
  829. </a>
  830. </li>
  831. </ul>
  832. </nav>
  833. </li>
  834. <li class="md-nav__item">
  835. <a href="#authenticating-with-a-gcp-service-account" class="md-nav__link">
  836. <span class="md-ellipsis">
  837. Authenticating with a GCP service account
  838. </span>
  839. </a>
  840. </li>
  841. </ul>
  842. </nav>
  843. </li>
  844. <li class="md-nav__item">
  845. <a href="#using-pushsecret-with-an-existing-google-secret-manager-secret" class="md-nav__link">
  846. <span class="md-ellipsis">
  847. Using PushSecret with an existing Google Secret Manager secret
  848. </span>
  849. </a>
  850. </li>
  851. <li class="md-nav__item">
  852. <a href="#secret-replication-and-encryption-configuration" class="md-nav__link">
  853. <span class="md-ellipsis">
  854. Secret Replication and Encryption Configuration
  855. </span>
  856. </a>
  857. <nav class="md-nav" aria-label="Secret Replication and Encryption Configuration">
  858. <ul class="md-nav__list">
  859. <li class="md-nav__item">
  860. <a href="#location-and-replication" class="md-nav__link">
  861. <span class="md-ellipsis">
  862. Location and Replication
  863. </span>
  864. </a>
  865. </li>
  866. <li class="md-nav__item">
  867. <a href="#customer-managed-encryption-keys-cmek" class="md-nav__link">
  868. <span class="md-ellipsis">
  869. Customer-Managed Encryption Keys (CMEK)
  870. </span>
  871. </a>
  872. </li>
  873. </ul>
  874. </nav>
  875. </li>
  876. <li class="md-nav__item">
  877. <a href="#regional-secrets" class="md-nav__link">
  878. <span class="md-ellipsis">
  879. Regional Secrets
  880. </span>
  881. </a>
  882. </li>
  883. </ul>
  884. </nav>
  885. </li>
  886. <li class="md-nav__item">
  887. <a href="../hashicorp-vault/" class="md-nav__link">
  888. <span class="md-ellipsis">
  889. HashiCorp Vault
  890. </span>
  891. </a>
  892. </li>
  893. <li class="md-nav__item">
  894. <a href="../kubernetes/" class="md-nav__link">
  895. <span class="md-ellipsis">
  896. Kubernetes
  897. </span>
  898. </a>
  899. </li>
  900. <li class="md-nav__item">
  901. <a href="../ibm-secrets-manager/" class="md-nav__link">
  902. <span class="md-ellipsis">
  903. IBM Secrets Manager
  904. </span>
  905. </a>
  906. </li>
  907. <li class="md-nav__item">
  908. <a href="../akeyless/" class="md-nav__link">
  909. <span class="md-ellipsis">
  910. Akeyless
  911. </span>
  912. </a>
  913. </li>
  914. <li class="md-nav__item">
  915. <a href="../yandex-certificate-manager/" class="md-nav__link">
  916. <span class="md-ellipsis">
  917. Yandex Certificate Manager
  918. </span>
  919. </a>
  920. </li>
  921. <li class="md-nav__item">
  922. <a href="../yandex-lockbox/" class="md-nav__link">
  923. <span class="md-ellipsis">
  924. Yandex Lockbox
  925. </span>
  926. </a>
  927. </li>
  928. <li class="md-nav__item">
  929. <a href="../alibaba/" class="md-nav__link">
  930. <span class="md-ellipsis">
  931. Alibaba Cloud
  932. </span>
  933. </a>
  934. </li>
  935. <li class="md-nav__item">
  936. <a href="../gitlab-variables/" class="md-nav__link">
  937. <span class="md-ellipsis">
  938. GitLab Variables
  939. </span>
  940. </a>
  941. </li>
  942. <li class="md-nav__item">
  943. <a href="../github/" class="md-nav__link">
  944. <span class="md-ellipsis">
  945. Github Actions Secrets
  946. </span>
  947. </a>
  948. </li>
  949. <li class="md-nav__item">
  950. <a href="../oracle-vault/" class="md-nav__link">
  951. <span class="md-ellipsis">
  952. Oracle Vault
  953. </span>
  954. </a>
  955. </li>
  956. <li class="md-nav__item">
  957. <a href="../1password-automation/" class="md-nav__link">
  958. <span class="md-ellipsis">
  959. 1Password Connect Server
  960. </span>
  961. </a>
  962. </li>
  963. <li class="md-nav__item">
  964. <a href="../1password-sdk/" class="md-nav__link">
  965. <span class="md-ellipsis">
  966. 1Password SDK
  967. </span>
  968. </a>
  969. </li>
  970. <li class="md-nav__item">
  971. <a href="../webhook/" class="md-nav__link">
  972. <span class="md-ellipsis">
  973. Webhook
  974. </span>
  975. </a>
  976. </li>
  977. <li class="md-nav__item">
  978. <a href="../fake/" class="md-nav__link">
  979. <span class="md-ellipsis">
  980. Fake
  981. </span>
  982. </a>
  983. </li>
  984. <li class="md-nav__item">
  985. <a href="../senhasegura-dsm/" class="md-nav__link">
  986. <span class="md-ellipsis">
  987. senhasegura DevOps Secrets Management (DSM)
  988. </span>
  989. </a>
  990. </li>
  991. <li class="md-nav__item">
  992. <a href="../doppler/" class="md-nav__link">
  993. <span class="md-ellipsis">
  994. Doppler
  995. </span>
  996. </a>
  997. </li>
  998. <li class="md-nav__item">
  999. <a href="../keeper-security/" class="md-nav__link">
  1000. <span class="md-ellipsis">
  1001. Keeper Security
  1002. </span>
  1003. </a>
  1004. </li>
  1005. <li class="md-nav__item">
  1006. <a href="../cloak/" class="md-nav__link">
  1007. <span class="md-ellipsis">
  1008. Cloak End 2 End Encrypted Secrets
  1009. </span>
  1010. </a>
  1011. </li>
  1012. <li class="md-nav__item">
  1013. <a href="../scaleway/" class="md-nav__link">
  1014. <span class="md-ellipsis">
  1015. Scaleway
  1016. </span>
  1017. </a>
  1018. </li>
  1019. <li class="md-nav__item">
  1020. <a href="../delinea/" class="md-nav__link">
  1021. <span class="md-ellipsis">
  1022. Delinea
  1023. </span>
  1024. </a>
  1025. </li>
  1026. <li class="md-nav__item">
  1027. <a href="../secretserver/" class="md-nav__link">
  1028. <span class="md-ellipsis">
  1029. Secret Server
  1030. </span>
  1031. </a>
  1032. </li>
  1033. <li class="md-nav__item">
  1034. <a href="../passbolt/" class="md-nav__link">
  1035. <span class="md-ellipsis">
  1036. Passbolt
  1037. </span>
  1038. </a>
  1039. </li>
  1040. <li class="md-nav__item">
  1041. <a href="../pulumi/" class="md-nav__link">
  1042. <span class="md-ellipsis">
  1043. Pulumi ESC
  1044. </span>
  1045. </a>
  1046. </li>
  1047. <li class="md-nav__item">
  1048. <a href="../onboardbase/" class="md-nav__link">
  1049. <span class="md-ellipsis">
  1050. Onboardbase
  1051. </span>
  1052. </a>
  1053. </li>
  1054. <li class="md-nav__item">
  1055. <a href="../../provider-passworddepot/" class="md-nav__link">
  1056. <span class="md-ellipsis">
  1057. Password Depot
  1058. </span>
  1059. </a>
  1060. </li>
  1061. <li class="md-nav__item">
  1062. <a href="../fortanix/" class="md-nav__link">
  1063. <span class="md-ellipsis">
  1064. Fortanix
  1065. </span>
  1066. </a>
  1067. </li>
  1068. <li class="md-nav__item">
  1069. <a href="../infisical/" class="md-nav__link">
  1070. <span class="md-ellipsis">
  1071. Infisical
  1072. </span>
  1073. </a>
  1074. </li>
  1075. <li class="md-nav__item">
  1076. <a href="../previder/" class="md-nav__link">
  1077. <span class="md-ellipsis">
  1078. Previder
  1079. </span>
  1080. </a>
  1081. </li>
  1082. <li class="md-nav__item">
  1083. <a href="../openbao/" class="md-nav__link">
  1084. <span class="md-ellipsis">
  1085. OpenBao
  1086. </span>
  1087. </a>
  1088. </li>
  1089. </ul>
  1090. </nav>
  1091. </li>
  1092. <li class="md-nav__item md-nav__item--nested">
  1093. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_5" >
  1094. <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
  1095. <span class="md-ellipsis">
  1096. Examples
  1097. </span>
  1098. <span class="md-nav__icon md-icon"></span>
  1099. </label>
  1100. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
  1101. <label class="md-nav__title" for="__nav_5">
  1102. <span class="md-nav__icon md-icon"></span>
  1103. Examples
  1104. </label>
  1105. <ul class="md-nav__list" data-md-scrollfix>
  1106. <li class="md-nav__item">
  1107. <a href="../../examples/gitops-using-fluxcd/" class="md-nav__link">
  1108. <span class="md-ellipsis">
  1109. FluxCD
  1110. </span>
  1111. </a>
  1112. </li>
  1113. <li class="md-nav__item">
  1114. <a href="../../examples/anchore-engine-credentials/" class="md-nav__link">
  1115. <span class="md-ellipsis">
  1116. Anchore Engine
  1117. </span>
  1118. </a>
  1119. </li>
  1120. <li class="md-nav__item">
  1121. <a href="../../examples/jenkins-kubernetes-credentials/" class="md-nav__link">
  1122. <span class="md-ellipsis">
  1123. Jenkins
  1124. </span>
  1125. </a>
  1126. </li>
  1127. <li class="md-nav__item">
  1128. <a href="../../examples/bitwarden/" class="md-nav__link">
  1129. <span class="md-ellipsis">
  1130. Bitwarden
  1131. </span>
  1132. </a>
  1133. </li>
  1134. </ul>
  1135. </nav>
  1136. </li>
  1137. <li class="md-nav__item md-nav__item--nested">
  1138. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_6" >
  1139. <label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
  1140. <span class="md-ellipsis">
  1141. Community
  1142. </span>
  1143. <span class="md-nav__icon md-icon"></span>
  1144. </label>
  1145. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
  1146. <label class="md-nav__title" for="__nav_6">
  1147. <span class="md-nav__icon md-icon"></span>
  1148. Community
  1149. </label>
  1150. <ul class="md-nav__list" data-md-scrollfix>
  1151. <li class="md-nav__item md-nav__item--nested">
  1152. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_6_1" >
  1153. <label class="md-nav__link" for="__nav_6_1" id="__nav_6_1_label" tabindex="0">
  1154. <span class="md-ellipsis">
  1155. Contributing
  1156. </span>
  1157. <span class="md-nav__icon md-icon"></span>
  1158. </label>
  1159. <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_1_label" aria-expanded="false">
  1160. <label class="md-nav__title" for="__nav_6_1">
  1161. <span class="md-nav__icon md-icon"></span>
  1162. Contributing
  1163. </label>
  1164. <ul class="md-nav__list" data-md-scrollfix>
  1165. <li class="md-nav__item">
  1166. <a href="../../contributing/devguide/" class="md-nav__link">
  1167. <span class="md-ellipsis">
  1168. Developer guide
  1169. </span>
  1170. </a>
  1171. </li>
  1172. <li class="md-nav__item">
  1173. <a href="../../contributing/process/" class="md-nav__link">
  1174. <span class="md-ellipsis">
  1175. Contributing Process
  1176. </span>
  1177. </a>
  1178. </li>
  1179. <li class="md-nav__item">
  1180. <a href="../../contributing/release/" class="md-nav__link">
  1181. <span class="md-ellipsis">
  1182. Release Process
  1183. </span>
  1184. </a>
  1185. </li>
  1186. <li class="md-nav__item">
  1187. <a href="../../contributing/coc/" class="md-nav__link">
  1188. <span class="md-ellipsis">
  1189. Code of Conduct
  1190. </span>
  1191. </a>
  1192. </li>
  1193. <li class="md-nav__item">
  1194. <a href="../../contributing/calendar/" class="md-nav__link">
  1195. <span class="md-ellipsis">
  1196. Community meetings calendar
  1197. </span>
  1198. </a>
  1199. </li>
  1200. <li class="md-nav__item">
  1201. <a href="../../contributing/roadmap/" class="md-nav__link">
  1202. <span class="md-ellipsis">
  1203. Roadmap
  1204. </span>
  1205. </a>
  1206. </li>
  1207. </ul>
  1208. </nav>
  1209. </li>
  1210. <li class="md-nav__item md-nav__item--nested">
  1211. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_6_2" >
  1212. <label class="md-nav__link" for="__nav_6_2" id="__nav_6_2_label" tabindex="0">
  1213. <span class="md-ellipsis">
  1214. External Resources
  1215. </span>
  1216. <span class="md-nav__icon md-icon"></span>
  1217. </label>
  1218. <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_2_label" aria-expanded="false">
  1219. <label class="md-nav__title" for="__nav_6_2">
  1220. <span class="md-nav__icon md-icon"></span>
  1221. External Resources
  1222. </label>
  1223. <ul class="md-nav__list" data-md-scrollfix>
  1224. <li class="md-nav__item">
  1225. <a href="../../eso-talks/" class="md-nav__link">
  1226. <span class="md-ellipsis">
  1227. Talks
  1228. </span>
  1229. </a>
  1230. </li>
  1231. <li class="md-nav__item">
  1232. <a href="../../eso-demos/" class="md-nav__link">
  1233. <span class="md-ellipsis">
  1234. Demos
  1235. </span>
  1236. </a>
  1237. </li>
  1238. <li class="md-nav__item">
  1239. <a href="../../eso-blogs/" class="md-nav__link">
  1240. <span class="md-ellipsis">
  1241. Blogs
  1242. </span>
  1243. </a>
  1244. </li>
  1245. <li class="md-nav__item">
  1246. <a href="../../eso-tools/" class="md-nav__link">
  1247. <span class="md-ellipsis">
  1248. Tools
  1249. </span>
  1250. </a>
  1251. </li>
  1252. </ul>
  1253. </nav>
  1254. </li>
  1255. </ul>
  1256. </nav>
  1257. </li>
  1258. </ul>
  1259. </nav>
  1260. </div>
  1261. </div>
  1262. </div>
  1263. <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
  1264. <div class="md-sidebar__scrollwrap">
  1265. <div class="md-sidebar__inner">
  1266. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  1267. <label class="md-nav__title" for="__toc">
  1268. <span class="md-nav__icon md-icon"></span>
  1269. Table of contents
  1270. </label>
  1271. <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
  1272. <li class="md-nav__item">
  1273. <a href="#authentication" class="md-nav__link">
  1274. <span class="md-ellipsis">
  1275. Authentication
  1276. </span>
  1277. </a>
  1278. <nav class="md-nav" aria-label="Authentication">
  1279. <ul class="md-nav__list">
  1280. <li class="md-nav__item">
  1281. <a href="#workload-identity-federation" class="md-nav__link">
  1282. <span class="md-ellipsis">
  1283. Workload Identity Federation
  1284. </span>
  1285. </a>
  1286. <nav class="md-nav" aria-label="Workload Identity Federation">
  1287. <ul class="md-nav__list">
  1288. <li class="md-nav__item">
  1289. <a href="#prerequisites" class="md-nav__link">
  1290. <span class="md-ellipsis">
  1291. Prerequisites
  1292. </span>
  1293. </a>
  1294. </li>
  1295. <li class="md-nav__item">
  1296. <a href="#using-a-kubernetes-service-account-as-a-gcp-iam-principal" class="md-nav__link">
  1297. <span class="md-ellipsis">
  1298. Using a Kubernetes service account as a GCP IAM principal
  1299. </span>
  1300. </a>
  1301. </li>
  1302. <li class="md-nav__item">
  1303. <a href="#linking-a-kubernetes-service-account-to-a-gcp-service-account" class="md-nav__link">
  1304. <span class="md-ellipsis">
  1305. Linking a Kubernetes service account to a GCP service account
  1306. </span>
  1307. </a>
  1308. </li>
  1309. <li class="md-nav__item">
  1310. <a href="#authorizing-the-core-controller-pod" class="md-nav__link">
  1311. <span class="md-ellipsis">
  1312. Authorizing the Core Controller Pod
  1313. </span>
  1314. </a>
  1315. </li>
  1316. </ul>
  1317. </nav>
  1318. </li>
  1319. <li class="md-nav__item">
  1320. <a href="#authenticating-with-a-gcp-service-account" class="md-nav__link">
  1321. <span class="md-ellipsis">
  1322. Authenticating with a GCP service account
  1323. </span>
  1324. </a>
  1325. </li>
  1326. </ul>
  1327. </nav>
  1328. </li>
  1329. <li class="md-nav__item">
  1330. <a href="#using-pushsecret-with-an-existing-google-secret-manager-secret" class="md-nav__link">
  1331. <span class="md-ellipsis">
  1332. Using PushSecret with an existing Google Secret Manager secret
  1333. </span>
  1334. </a>
  1335. </li>
  1336. <li class="md-nav__item">
  1337. <a href="#secret-replication-and-encryption-configuration" class="md-nav__link">
  1338. <span class="md-ellipsis">
  1339. Secret Replication and Encryption Configuration
  1340. </span>
  1341. </a>
  1342. <nav class="md-nav" aria-label="Secret Replication and Encryption Configuration">
  1343. <ul class="md-nav__list">
  1344. <li class="md-nav__item">
  1345. <a href="#location-and-replication" class="md-nav__link">
  1346. <span class="md-ellipsis">
  1347. Location and Replication
  1348. </span>
  1349. </a>
  1350. </li>
  1351. <li class="md-nav__item">
  1352. <a href="#customer-managed-encryption-keys-cmek" class="md-nav__link">
  1353. <span class="md-ellipsis">
  1354. Customer-Managed Encryption Keys (CMEK)
  1355. </span>
  1356. </a>
  1357. </li>
  1358. </ul>
  1359. </nav>
  1360. </li>
  1361. <li class="md-nav__item">
  1362. <a href="#regional-secrets" class="md-nav__link">
  1363. <span class="md-ellipsis">
  1364. Regional Secrets
  1365. </span>
  1366. </a>
  1367. </li>
  1368. </ul>
  1369. </nav>
  1370. </div>
  1371. </div>
  1372. </div>
  1373. <div class="md-content" data-md-component="content">
  1374. <article class="md-content__inner md-typeset">
  1375. <h1>Google Cloud Secret Manager</h1>
  1376. <p>External Secrets Operator integrates with the <a href="https://cloud.google.com/secret-manager">Google Cloud Secret Manager</a>.</p>
  1377. <h2 id="authentication">Authentication</h2>
  1378. <h3 id="workload-identity-federation">Workload Identity Federation</h3>
  1379. <p>Through <a href="https://cloud.google.com/kubernetes-engine/docs/concepts/workload-identity">Workload Identity Federation</a> (WIF), <a href="https://cloud.google.com/kubernetes-engine">Google Kubernetes Engine</a> (GKE) workloads can authenticate with Google Cloud Platform (GCP) services like Secret Manager without using static, long-lived credentials.</p>
  1380. <p>Authenticating through WIF is the recommended approach when using the External Secrets Operator (ESO) on GKE clusters. ESO supports three options:</p>
  1381. <ul>
  1382. <li><strong>Using a Kubernetes service account as a GCP IAM principal</strong>: The <code>SecretStore</code> (or <code>ClusterSecretStore</code>) references a <a href="https://kubernetes.io/docs/concepts/security/service-accounts">Kubernetes service account</a> that is authorized to access Secret Manager secrets.</li>
  1383. <li><strong>Linking a Kubernetes service account to a GCP service account:</strong> The <code>SecretStore</code> (or <code>ClusterSecretStore</code>) references a Kubernetes service account, which is linked to a <a href="https://cloud.google.com/iam/docs/service-accounts">GCP service account</a> that is authorized to access Secret Manager secrets. This requires that the Kubernetes service account is annotated correctly and granted the <code>iam.workloadIdentityUser</code> role on the GCP service account.</li>
  1384. <li><strong>Authorizing the Core Controller Pod:</strong> The ESO Core Controller Pod's service account is authorized to access Secret Manager secrets. No authentication is required for <code>SecretStore</code> and <code>ClusterSecretStore</code> instances.</li>
  1385. </ul>
  1386. <p>In the following, we will describe each of these options in detail.</p>
  1387. <h4 id="prerequisites">Prerequisites</h4>
  1388. <ul>
  1389. <li>Ensure that <a href="https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity">Workload Identity Federation is enabled</a> for the GKE cluster.</li>
  1390. </ul>
  1391. <p><em>Note that while Google Cloud WIF <a href="https://cloud.google.com/iam/docs/workload-identity-federation-with-kubernetes">is available for AKS, EKS, and self-hosted Kubernetes clusters</a>, ESO currently supports WIF authentication only for GKE (<a href="https://github.com/external-secrets/external-secrets/issues/1038">Issue #1038</a>).</em></p>
  1392. <h4 id="using-a-kubernetes-service-account-as-a-gcp-iam-principal">Using a Kubernetes service account as a GCP IAM principal</h4>
  1393. <p>The <code>SecretStore</code> (or <code>ClusterSecretStore</code>) references a Kubernetes service account that is authorized to access Secret Manager secrets.</p>
  1394. <p>To demonstrate this approach, we'll create a <code>SecretStore</code> in the <code>demo</code> namespace.</p>
  1395. <p>First, create a Kubernetes service account in the <code>demo</code> namespace:</p>
  1396. <div class="highlight"><pre><span></span><code><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">v1</span>
  1397. <span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ServiceAccount</span>
  1398. <span class="nt">metadata</span><span class="p">:</span>
  1399. <span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">demo-secrets-sa</span>
  1400. <span class="w"> </span><span class="nt">namespace</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">demo</span>
  1401. </code></pre></div>
  1402. <p>To grant a Kubernetes service account access to Secret Manager secret(s), you need to know four values:</p>
  1403. <ul>
  1404. <li><code>PROJECT_ID</code>: Your GCP project ID, which you can find under "Project Info" on your console dashboard. Note that this might be different from your project's <em>name</em>.</li>
  1405. <li><code>PROJECT_NUMBER</code>: Your GCP project number, which you can find under "Project Info" on your console dashboard or through <code>gcloud projects describe $PROJECT_ID --format="value(projectNumber)"</code>.</li>
  1406. <li><code>K8S_SA</code>: The name of the Kubernetes service account you created. (In our example, <code>demo-secrets-sa</code>.)</li>
  1407. <li><code>K8S_NAMESPACE</code>: The namespace where you created the Kubernetes service account (In our example, <code>demo</code>.)</li>
  1408. </ul>
  1409. <p>For example, the following CLI call grants the Kubernetes service account access to a secret <code>demo-secret</code>:</p>
  1410. <div class="highlight"><pre><span></span><code>gcloud<span class="w"> </span>secrets<span class="w"> </span>add-iam-policy-binding<span class="w"> </span>demo-secret<span class="w"> </span><span class="se">\</span>
  1411. <span class="w"> </span>--project<span class="o">=</span><span class="nv">$PROJECT_ID</span><span class="w"> </span><span class="se">\</span>
  1412. <span class="w"> </span>--role<span class="o">=</span><span class="s2">&quot;roles/secretmanager.secretAccessor&quot;</span>
  1413. <span class="w"> </span>--member<span class="o">=</span><span class="s2">&quot;principal://iam.googleapis.com/projects/</span><span class="si">${</span><span class="nv">PROJECT_NUMBER</span><span class="si">}</span><span class="s2">/locations/global/workloadIdentityPools/</span><span class="si">${</span><span class="nv">PROJECT_ID</span><span class="si">}</span><span class="s2">.svc.id.goog/subject/ns/</span><span class="si">${</span><span class="nv">K8S_NAMESPACE</span><span class="si">}</span><span class="s2">/sa/</span><span class="si">${</span><span class="nv">K8S_SA</span><span class="si">}</span><span class="s2">&quot;</span>
  1414. </code></pre></div>
  1415. <p>You can also grant the Kubernetes service account access to <em>all</em> secrets in a GCP project:</p>
  1416. <div class="highlight"><pre><span></span><code>gcloud<span class="w"> </span>project<span class="w"> </span>add-iam-policy-binding<span class="w"> </span><span class="nv">$PROJECT_ID</span><span class="w"> </span><span class="se">\</span>
  1417. <span class="w"> </span>--role<span class="o">=</span><span class="s2">&quot;roles/secretmanager.secretAccessor&quot;</span>
  1418. <span class="w"> </span>--member<span class="o">=</span><span class="s2">&quot;principal://iam.googleapis.com/projects/</span><span class="si">${</span><span class="nv">PROJECT_NUMBER</span><span class="si">}</span><span class="s2">/locations/global/workloadIdentityPools/</span><span class="si">${</span><span class="nv">PROJECT_ID</span><span class="si">}</span><span class="s2">.svc.id.goog/subject/ns/</span><span class="si">${</span><span class="nv">K8S_NAMESPACE</span><span class="si">}</span><span class="s2">/sa/</span><span class="si">${</span><span class="nv">K8S_SA</span><span class="si">}</span><span class="s2">&quot;</span>
  1419. </code></pre></div>
  1420. <p>Note that this allows anyone who can create <code>ExternalSecret</code> resources referencing a <code>SecretStore</code> instance using this service account access to all secrets in the project.</p>
  1421. <p><em>For more information about WIF and Secret Manager permissions, refer to:</em></p>
  1422. <ul>
  1423. <li><em><a href="https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity">Authenticate to Google Cloud APIs from GKE workloads</a> in the GKE documentation.</em></li>
  1424. <li><em><a href="https://cloud.google.com/secret-manager/docs/access-control">Access control with IAM</a> in the Secret Manager documentation.</em></li>
  1425. </ul>
  1426. <p>To create a <code>SecretStore</code> that references a service account, in addition to the four values above, you need to know:</p>
  1427. <ul>
  1428. <li><code>CLUSTER_NAME</code>: The name of the GKE cluster.</li>
  1429. <li><code>CLUSTER_LOCATION</code>: The location of the GKE cluster. For a regional cluster, this is the region. For a zonal cluster, this is the zone.</li>
  1430. </ul>
  1431. <p>You can optionally verify these values through the CLI:</p>
  1432. <div class="highlight"><pre><span></span><code>gcloud<span class="w"> </span>container<span class="w"> </span>clusters<span class="w"> </span>describe<span class="w"> </span><span class="nv">$CLUSTER_NAME</span><span class="w"> </span><span class="se">\</span>
  1433. <span class="w"> </span>--project<span class="o">=</span><span class="nv">$PROJECT_ID</span><span class="w"> </span>--location<span class="o">=</span><span class="nv">$CLUSTER_LOCATION</span>
  1434. </code></pre></div>
  1435. <p>If the three values are correct, this returns information about your cluster.</p>
  1436. <p>Finally, create the <code>SecretStore</code>:</p>
  1437. <div class="highlight"><pre><span></span><code><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">external-secrets.io/v1</span>
  1438. <span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">SecretStore</span>
  1439. <span class="nt">metadata</span><span class="p">:</span>
  1440. <span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">demo-store</span>
  1441. <span class="w"> </span><span class="nt">namespace</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">demo</span>
  1442. <span class="nt">spec</span><span class="p">:</span>
  1443. <span class="w"> </span><span class="nt">provider</span><span class="p">:</span>
  1444. <span class="w"> </span><span class="nt">gcpsm</span><span class="p">:</span>
  1445. <span class="w"> </span><span class="nt">projectID</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[</span><span class="nv">PROJECT_ID</span><span class="p p-Indicator">]</span>
  1446. <span class="w"> </span><span class="nt">auth</span><span class="p">:</span>
  1447. <span class="w"> </span><span class="nt">workloadIdentity</span><span class="p">:</span>
  1448. <span class="w"> </span><span class="nt">clusterLocation</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[</span><span class="nv">CLUSTER_LOCATION</span><span class="p p-Indicator">]</span>
  1449. <span class="w"> </span><span class="nt">clusterName</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[</span><span class="nv">CLUSTER_NAME</span><span class="p p-Indicator">]</span>
  1450. <span class="w"> </span><span class="nt">serviceAccountRef</span><span class="p">:</span>
  1451. <span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">demo-secrets-sa</span>
  1452. </code></pre></div>
  1453. <p>In the case of a <code>ClusterSecretStore</code>, you additionally have to define the service account's <code>namespace</code> under <code>auth.workloadIdentity.serviceAccountRef</code>.</p>
  1454. <h4 id="linking-a-kubernetes-service-account-to-a-gcp-service-account">Linking a Kubernetes service account to a GCP service account</h4>
  1455. <p>The <code>SecretStore</code> (or <code>ClusterSecretStore</code>) references a Kubernetes service account, which is linked to a GCP service account that is authorized to access Secret Manager secrets.</p>
  1456. <p>To demonstrate this approach, we'll create a <code>SecretStore</code> in the <code>demo</code> namespace.</p>
  1457. <p>To set up the Kubernetes service account, you need to know or choose the following values:</p>
  1458. <ul>
  1459. <li><code>PROJECT_ID</code>: Your GCP project ID, which you can find under "Project Info" on your console dashboard. Note that this might be different from your project's <em>name</em>.</li>
  1460. <li><code>GCP_SA</code>: The name of the GCP service account you are going to create and use (e.g., <code>external-secrets</code>).</li>
  1461. </ul>
  1462. <p>First, create the Kubernetes service account with an annotation that references the GCP service account:</p>
  1463. <div class="highlight"><pre><span></span><code><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">v1</span>
  1464. <span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ServiceAccount</span>
  1465. <span class="nt">metadata</span><span class="p">:</span>
  1466. <span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">demo-secrets-sa</span>
  1467. <span class="w"> </span><span class="nt">namespace</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">demo</span>
  1468. <span class="w"> </span><span class="nt">annotations</span><span class="p">:</span>
  1469. <span class="w"> </span><span class="nt">iam.gke.io/gcp-service-account</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[</span><span class="nv">GCP_SA</span><span class="p p-Indicator">]</span><span class="err">@</span><span class="p p-Indicator">[</span><span class="nv">PROJECT_ID</span><span class="p p-Indicator">]</span><span class="l l-Scalar l-Scalar-Plain">.iam.gserviceaccount.com</span>
  1470. </code></pre></div>
  1471. <p>Next, create the GCP service account:</p>
  1472. <div class="highlight"><pre><span></span><code>gcloud<span class="w"> </span>iam<span class="w"> </span>service-accounts<span class="w"> </span>create<span class="w"> </span><span class="nv">$GCP_SA</span><span class="w"> </span><span class="se">\</span>
  1473. <span class="w"> </span>--project<span class="o">=</span><span class="nv">$PROJECT_ID</span>
  1474. </code></pre></div>
  1475. <p>To finalize the link between the GCP service account and the Kubernetes service account, you need two additional values:</p>
  1476. <ul>
  1477. <li><code>K8S_SA</code>: The name of the Kubernetes service account you created. (In our example, <code>demo-secrets-sa</code>.)</li>
  1478. <li><code>K8S_NAMESPACE</code>: The namespace where you created the Kubernetes service account (In our example, <code>demo</code>.)</li>
  1479. </ul>
  1480. <p>Grant the Kubernetes service account the <code>iam.workloadIdentityUser</code> role on the GCP service account:</p>
  1481. <div class="highlight"><pre><span></span><code>gcloud<span class="w"> </span>iam<span class="w"> </span>service-accounts<span class="w"> </span>add-iam-policy-binding<span class="w"> </span><span class="se">\</span>
  1482. <span class="w"> </span><span class="si">${</span><span class="nv">GCP_SA</span><span class="si">}</span>@<span class="si">${</span><span class="nv">PROJECT_ID</span><span class="si">}</span>.iam.gserviceaccount.com<span class="w"> </span><span class="se">\</span>
  1483. <span class="w"> </span>--role<span class="o">=</span><span class="s2">&quot;roles/iam.workloadIdentityUser&quot;</span><span class="w"> </span><span class="se">\</span>
  1484. <span class="w"> </span>--member<span class="w"> </span><span class="s2">&quot;serviceAccount:</span><span class="si">${</span><span class="nv">PROJECT_ID</span><span class="si">}</span><span class="s2">.svc.id.goog[</span><span class="si">${</span><span class="nv">K8S_NAMESPACE</span><span class="si">}</span><span class="s2">/</span><span class="si">${</span><span class="nv">K8S_SA</span><span class="si">}</span><span class="s2">]&quot;</span>
  1485. </code></pre></div>
  1486. <p>Next, grant the GCP service account access to a secret in the Secret Manager.
  1487. For example, the following CLI call grants it access to a secret <code>demo-secret</code>:</p>
  1488. <div class="highlight"><pre><span></span><code>gcloud<span class="w"> </span>secrets<span class="w"> </span>add-iam-policy-binding<span class="w"> </span>demo-secret<span class="w"> </span><span class="se">\</span>
  1489. <span class="w"> </span>--project<span class="o">=</span><span class="nv">$PROJECT_ID</span><span class="w"> </span><span class="se">\</span>
  1490. <span class="w"> </span>--role<span class="o">=</span><span class="s2">&quot;roles/secretmanager.secretAccessor&quot;</span>
  1491. <span class="w"> </span>--member<span class="w"> </span><span class="s2">&quot;serviceAccount:</span><span class="si">${</span><span class="nv">GCP_SA</span><span class="si">}</span><span class="s2">@</span><span class="si">${</span><span class="nv">PROJECT_ID</span><span class="si">}</span><span class="s2">.iam.gserviceaccount.com&quot;</span>
  1492. </code></pre></div>
  1493. <p>You can also grant the GCP service account access to <em>all</em> secrets in a GCP project:</p>
  1494. <div class="highlight"><pre><span></span><code>gcloud<span class="w"> </span>project<span class="w"> </span>add-iam-policy-binding<span class="w"> </span><span class="nv">$PROJECT_ID</span><span class="w"> </span><span class="se">\</span>
  1495. <span class="w"> </span>--role<span class="o">=</span><span class="s2">&quot;roles/secretmanager.secretAccessor&quot;</span>
  1496. <span class="w"> </span>--member<span class="w"> </span><span class="s2">&quot;serviceAccount:</span><span class="si">${</span><span class="nv">GCP_SA</span><span class="si">}</span><span class="s2">@</span><span class="si">${</span><span class="nv">PROJECT_ID</span><span class="si">}</span><span class="s2">.iam.gserviceaccount.com&quot;</span>
  1497. </code></pre></div>
  1498. <p>Note that this allows anyone who can create <code>ExternalSecret</code> resources referencing a <code>SecretStore</code> instance using this service account access to all secrets in the project.</p>
  1499. <p><em>For more information about WIF and Secret Manager permissions, refer to:</em></p>
  1500. <ul>
  1501. <li><em><a href="https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity">Authenticate to Google Cloud APIs from GKE workloads</a> in the GKE documentation.</em></li>
  1502. <li><em><a href="https://cloud.google.com/secret-manager/docs/access-control">Access control with IAM</a> in the Secret Manager documentation.</em></li>
  1503. </ul>
  1504. <p>To create a <code>SecretStore</code> that references the Kubernetes service account, you need to know:</p>
  1505. <ul>
  1506. <li><code>CLUSTER_NAME</code>: The name of the GKE cluster.</li>
  1507. <li><code>CLUSTER_LOCATION</code>: The location of the GKE cluster. For a regional cluster, this is the region. For a zonal cluster, this is the zone.</li>
  1508. </ul>
  1509. <p>You can optionally verify the information through the CLI:</p>
  1510. <div class="highlight"><pre><span></span><code>gcloud<span class="w"> </span>container<span class="w"> </span>clusters<span class="w"> </span>describe<span class="w"> </span><span class="nv">$CLUSTER_NAME</span><span class="w"> </span><span class="se">\</span>
  1511. <span class="w"> </span>--project<span class="o">=</span><span class="nv">$PROJECT_ID</span><span class="w"> </span>--location<span class="o">=</span><span class="nv">$CLUSTER_LOCATION</span>
  1512. </code></pre></div>
  1513. <p>If the three values are correct, this returns information about your cluster.</p>
  1514. <p>Finally, create the <code>SecretStore</code>:</p>
  1515. <div class="highlight"><pre><span></span><code><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">external-secrets.io/v1</span>
  1516. <span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">SecretStore</span>
  1517. <span class="nt">metadata</span><span class="p">:</span>
  1518. <span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">demo-store</span>
  1519. <span class="w"> </span><span class="nt">namespace</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">demo</span>
  1520. <span class="nt">spec</span><span class="p">:</span>
  1521. <span class="w"> </span><span class="nt">provider</span><span class="p">:</span>
  1522. <span class="w"> </span><span class="nt">gcpsm</span><span class="p">:</span>
  1523. <span class="w"> </span><span class="nt">projectID</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[</span><span class="nv">PROJECT_ID</span><span class="p p-Indicator">]</span>
  1524. <span class="w"> </span><span class="nt">auth</span><span class="p">:</span>
  1525. <span class="w"> </span><span class="nt">workloadIdentity</span><span class="p">:</span>
  1526. <span class="w"> </span><span class="nt">clusterLocation</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[</span><span class="nv">CLUSTER_LOCATION</span><span class="p p-Indicator">]</span>
  1527. <span class="w"> </span><span class="nt">clusterName</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[</span><span class="nv">CLUSTER_NAME</span><span class="p p-Indicator">]</span>
  1528. <span class="w"> </span><span class="nt">serviceAccountRef</span><span class="p">:</span>
  1529. <span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">demo-secrets-sa</span>
  1530. </code></pre></div>
  1531. <p>In the case of a <code>ClusterSecretStore</code>, you additionally have to define the service account's <code>namespace</code> under <code>auth.workloadIdentity.serviceAccountRef</code>.</p>
  1532. <h4 id="authorizing-the-core-controller-pod">Authorizing the Core Controller Pod</h4>
  1533. <p>Instead of managing authentication at the <code>SecretStore</code> and <code>ClusterSecretStore</code> level, you can give the <a href="../api/components/">Core Controller</a> Pod's service account access to Secret Manager secrets using one of the two WIF approaches described in the previous sections.</p>
  1534. <p>To demonstrate this approach, we'll assume you installed ESO using Helm into the <code>external-secrets</code> namespace, with <code>external-secrets</code> as the release name:</p>
  1535. <div class="highlight"><pre><span></span><code>helm<span class="w"> </span>repo<span class="w"> </span>add<span class="w"> </span>external-secrets<span class="w"> </span>https://charts.external-secrets.io
  1536. helm<span class="w"> </span>install<span class="w"> </span>external-secrets<span class="w"> </span>external-secrets/external-secrets<span class="w"> </span><span class="se">\</span>
  1537. <span class="w"> </span>--namespace<span class="w"> </span>external-secrets<span class="w"> </span>--create-namespace
  1538. </code></pre></div>
  1539. <p>This creates a Kubernetes service account <code>external-secrets</code> in the <code>external-secrets</code> namespace, which is used by the Core Controller Pod.</p>
  1540. <p>To verify this (or to determine the service account's name in a different setup), you can run:</p>
  1541. <div class="highlight"><pre><span></span><code>kubectl<span class="w"> </span>get<span class="w"> </span>pods<span class="w"> </span>--namespace<span class="w"> </span>external-secrets<span class="w"> </span><span class="se">\</span>
  1542. <span class="w"> </span>--selector<span class="w"> </span>app.kubernetes.io/name<span class="o">=</span>external-secrets<span class="w"> </span><span class="se">\</span>
  1543. <span class="w"> </span>--output<span class="w"> </span><span class="nv">jsonpath</span><span class="o">=</span><span class="s1">&#39;{.items[0].spec.serviceAccountName}&#39;</span>
  1544. </code></pre></div>
  1545. <p>Use WIF to grant this Kubernetes service account access to the Secret Manager secrets.
  1546. You can use either of the approaches described in the previous two sections.</p>
  1547. <p><em>For details and further information on WIF and Secret Manager permissions, refer to:</em></p>
  1548. <ul>
  1549. <li><em><a href="https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity">Authenticate to Google Cloud APIs from GKE workloads</a> in the GKE documentation.</em></li>
  1550. <li><em><a href="https://cloud.google.com/secret-manager/docs/access-control">Access control with IAM</a> in the Secret Manager documentation.</em></li>
  1551. </ul>
  1552. <p>Once the Core Controller Pod can access the Secret Manager secret(s) through WIF via its Kubernetes service account, you can create <code>SecretStore</code> or <code>ClusterSecretStore</code> instances that only specify the GCP project ID, omitting the <code>auth</code> section entirely:</p>
  1553. <div class="highlight"><pre><span></span><code><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">external-secrets.io/v1</span>
  1554. <span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">SecretStore</span>
  1555. <span class="nt">metadata</span><span class="p">:</span>
  1556. <span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">demo-store</span>
  1557. <span class="w"> </span><span class="nt">namespace</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">demo</span>
  1558. <span class="nt">spec</span><span class="p">:</span>
  1559. <span class="w"> </span><span class="nt">provider</span><span class="p">:</span>
  1560. <span class="w"> </span><span class="nt">gcpsm</span><span class="p">:</span>
  1561. <span class="w"> </span><span class="nt">projectID</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[</span><span class="nv">PROJECT_ID</span><span class="p p-Indicator">]</span>
  1562. </code></pre></div>
  1563. <h3 id="authenticating-with-a-gcp-service-account">Authenticating with a GCP service account</h3>
  1564. <p>The <code>SecretStore</code> (or <code>ClusterSecretStore</code>) use a long-lived, static <a href="https://cloud.google.com/iam/docs/service-account-creds#key-types">GCP service account key</a> to authenticate with GCP.
  1565. This approach can be used on any Kubernetes cluster.</p>
  1566. <p>To demonstrate this approach, we'll create a <code>SecretStore</code> in the <code>demo</code> namespace.</p>
  1567. <p>First, create a GCP service account and grant it the <code>secretmanager.secretAccessor</code> role on the Secret Manager secret(s) you want to access.</p>
  1568. <p><em>For details and further information on managing service account permissions and Secret Manager roles, refer to:</em></p>
  1569. <ul>
  1570. <li><em><a href="https://cloud.google.com/iam/docs/attach-service-accounts">Attach service accounts to resources</a> in the IAM documentation.</em></li>
  1571. <li><em><a href="https://cloud.google.com/secret-manager/docs/access-control">Access control with IAM</a> in the Secret Manager documentation.</em></li>
  1572. </ul>
  1573. <p>Then, create a service account key pair using one of the methods described on the page <a href="https://cloud.google.com/iam/docs/keys-create-delete">Create and delete service account keys</a> in the Google Cloud IAM documentation and store the JSON file with the private key in a Kubernetes <code>Secret</code>:</p>
  1574. <div class="highlight"><pre><span></span><code><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">v1</span>
  1575. <span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Secret</span>
  1576. <span class="nt">metadata</span><span class="p">:</span>
  1577. <span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">gcp-sa-secret</span>
  1578. <span class="w"> </span><span class="nt">namespace</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">demo</span>
  1579. <span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Opaque</span>
  1580. <span class="nt">stringData</span><span class="p">:</span>
  1581. <span class="w"> </span><span class="nt">secret-access-credentials</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">|-</span>
  1582. <span class="w"> </span><span class="no">{</span>
  1583. <span class="w"> </span><span class="no">&quot;type&quot;: &quot;service_account&quot;,</span>
  1584. <span class="w"> </span><span class="no">&quot;project_id&quot;: &quot;external-secrets-operator&quot;,</span>
  1585. <span class="w"> </span><span class="no">&quot;private_key_id&quot;: &quot;&quot;,</span>
  1586. <span class="w"> </span><span class="no">&quot;private_key&quot;: &quot;-----BEGIN PRIVATE KEY-----\nA key\n-----END PRIVATE KEY-----\n&quot;,</span>
  1587. <span class="w"> </span><span class="no">&quot;client_email&quot;: &quot;test-service-account@external-secrets-operator.iam.gserviceaccount.com&quot;,</span>
  1588. <span class="w"> </span><span class="no">&quot;client_id&quot;: &quot;client ID&quot;,</span>
  1589. <span class="w"> </span><span class="no">&quot;auth_uri&quot;: &quot;https://accounts.google.com/o/oauth2/auth&quot;,</span>
  1590. <span class="w"> </span><span class="no">&quot;token_uri&quot;: &quot;https://oauth2.googleapis.com/token&quot;,</span>
  1591. <span class="w"> </span><span class="no">&quot;auth_provider_x509_cert_url&quot;: &quot;https://www.googleapis.com/oauth2/v1/certs&quot;,</span>
  1592. <span class="w"> </span><span class="no">&quot;client_x509_cert_url&quot;: &quot;https://www.googleapis.com/robot/v1/metadata/x509/test-service-account%40external-secrets-operator.iam.gserviceaccount.com&quot;</span>
  1593. <span class="w"> </span><span class="no">}</span>
  1594. </code></pre></div>
  1595. <p>Finally, reference this secret in the <code>SecretStore</code> manifest:</p>
  1596. <div class="highlight"><pre><span></span><code><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">external-secrets.io/v1</span>
  1597. <span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">SecretStore</span>
  1598. <span class="nt">metadata</span><span class="p">:</span>
  1599. <span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">demo-store</span>
  1600. <span class="w"> </span><span class="nt">namespace</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">demo</span>
  1601. <span class="nt">spec</span><span class="p">:</span>
  1602. <span class="w"> </span><span class="nt">provider</span><span class="p">:</span>
  1603. <span class="w"> </span><span class="nt">gcpsm</span><span class="p">:</span>
  1604. <span class="w"> </span><span class="nt">auth</span><span class="p">:</span>
  1605. <span class="w"> </span><span class="nt">secretRef</span><span class="p">:</span>
  1606. <span class="w"> </span><span class="nt">secretAccessKeySecretRef</span><span class="p">:</span>
  1607. <span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">gcp-sa-secret</span>
  1608. <span class="w"> </span><span class="nt">key</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">secret-access-credentials</span>
  1609. <span class="w"> </span><span class="nt">projectID</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[</span><span class="nv">PROJECT_ID</span><span class="p p-Indicator">]</span>
  1610. </code></pre></div>
  1611. <p>In the case of a <code>ClusterSecretStore</code>, you additionally have to specify the service account's <code>namespace</code> under <code>auth.secretRef.secretAccessKeySecretRef</code>.</p>
  1612. <h2 id="using-pushsecret-with-an-existing-google-secret-manager-secret">Using PushSecret with an existing Google Secret Manager secret</h2>
  1613. <p>There are some use cases where you want to use PushSecret for an existing Google Secret Manager Secret that already has labels defined. For example when the creation of the secret is managed by another controller like Kubernetes Config Connector (KCC) and the updating of the secret is managed by ESO.</p>
  1614. <p>To allow ESO to take ownership of the existing Google Secret Manager Secret, you need to add the label <code>"managed-by": "external-secrets"</code>.</p>
  1615. <p>By default, the PushSecret spec will replace any existing labels on the existing GCP Secret Manager Secret. To prevent this, a new field was added to the <code>spec.data.metadata</code> object called <code>mergePolicy</code> which defaults to <code>Replace</code> to ensure that there are no breaking changes and is backward compatible. The other option for this field is <code>Merge</code> which will merge the existing labels on the Google Secret Manager Secret with the labels defined in the PushSecret spec. This ensures that the existing labels defined on the Google Secret Manager Secret are retained.</p>
  1616. <p>Example of using the <code>mergePolicy</code> field:</p>
  1617. <div class="highlight"><pre><span></span><code><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">external-secrets.io/v1alpha1</span>
  1618. <span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">PushSecret</span>
  1619. <span class="nt">metadata</span><span class="p">:</span>
  1620. <span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">pushsecret-example</span>
  1621. <span class="w"> </span><span class="nt">namespace</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">default</span>
  1622. <span class="nt">spec</span><span class="p">:</span>
  1623. <span class="w"> </span><span class="nt">updatePolicy</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Replace</span>
  1624. <span class="w"> </span><span class="nt">deletionPolicy</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">None</span>
  1625. <span class="w"> </span><span class="nt">refreshInterval</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1h</span>
  1626. <span class="w"> </span><span class="nt">secretStoreRefs</span><span class="p">:</span>
  1627. <span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">gcp-secretstore</span>
  1628. <span class="w"> </span><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">SecretStore</span>
  1629. <span class="w"> </span><span class="nt">selector</span><span class="p">:</span>
  1630. <span class="w"> </span><span class="nt">secret</span><span class="p">:</span>
  1631. <span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">bestpokemon</span>
  1632. <span class="w"> </span><span class="nt">template</span><span class="p">:</span>
  1633. <span class="w"> </span><span class="nt">data</span><span class="p">:</span>
  1634. <span class="w"> </span><span class="nt">bestpokemon</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;{{</span><span class="nv"> </span><span class="s">.bestpokemon</span><span class="nv"> </span><span class="s">}}&quot;</span>
  1635. <span class="w"> </span><span class="nt">data</span><span class="p">:</span>
  1636. <span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">conversionStrategy</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">None</span>
  1637. <span class="w"> </span><span class="nt">metadata</span><span class="p">:</span>
  1638. <span class="w"> </span><span class="nt">mergePolicy</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Merge</span>
  1639. <span class="w"> </span><span class="nt">labels</span><span class="p">:</span>
  1640. <span class="w"> </span><span class="nt">anotherLabel</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">anotherValue</span>
  1641. <span class="w"> </span><span class="nt">match</span><span class="p">:</span>
  1642. <span class="w"> </span><span class="nt">secretKey</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">bestpokemon</span>
  1643. <span class="w"> </span><span class="nt">remoteRef</span><span class="p">:</span>
  1644. <span class="w"> </span><span class="nt">remoteKey</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">best-pokemon</span>
  1645. </code></pre></div>
  1646. <h2 id="secret-replication-and-encryption-configuration">Secret Replication and Encryption Configuration</h2>
  1647. <h3 id="location-and-replication">Location and Replication</h3>
  1648. <p>By default, secrets are automatically replicated across multiple regions. You can specify a single location for your secrets by setting the <code>replicationLocation</code> field:</p>
  1649. <div class="highlight"><pre><span></span><code><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">external-secrets.io/v1alpha1</span>
  1650. <span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">PushSecret</span>
  1651. <span class="nt">metadata</span><span class="p">:</span>
  1652. <span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">pushsecret-example</span>
  1653. <span class="nt">spec</span><span class="p">:</span>
  1654. <span class="w"> </span><span class="c1"># ... other fields ...</span>
  1655. <span class="w"> </span><span class="nt">data</span><span class="p">:</span>
  1656. <span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">match</span><span class="p">:</span>
  1657. <span class="w"> </span><span class="nt">secretKey</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">mykey</span>
  1658. <span class="w"> </span><span class="nt">remoteRef</span><span class="p">:</span>
  1659. <span class="w"> </span><span class="nt">remoteKey</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">my-secret</span>
  1660. <span class="w"> </span><span class="nt">metadata</span><span class="p">:</span>
  1661. <span class="w"> </span><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">kubernetes.external-secrets.io/v1alpha1</span>
  1662. <span class="w"> </span><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">PushSecretMetadata`</span>
  1663. <span class="w"> </span><span class="nt">spec</span><span class="p">:</span>
  1664. <span class="w"> </span><span class="nt">replicationLocation</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;us-east1&quot;</span>
  1665. </code></pre></div>
  1666. <h3 id="customer-managed-encryption-keys-cmek">Customer-Managed Encryption Keys (CMEK)</h3>
  1667. <p>You can use your own encryption keys to encrypt secrets at rest. To use Customer-Managed Encryption Keys (CMEK), you need to:</p>
  1668. <ol>
  1669. <li>Create a Cloud KMS key</li>
  1670. <li>Grant the service account the <code>roles/cloudkms.cryptoKeyEncrypterDecrypter</code> role on the key</li>
  1671. <li>Specify the key in the PushSecret metadata</li>
  1672. </ol>
  1673. <div class="highlight"><pre><span></span><code><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">external-secrets.io/v1alpha1</span>
  1674. <span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">PushSecret</span>
  1675. <span class="nt">metadata</span><span class="p">:</span>
  1676. <span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">pushsecret-example</span>
  1677. <span class="nt">spec</span><span class="p">:</span>
  1678. <span class="w"> </span><span class="c1"># ... other fields ...</span>
  1679. <span class="w"> </span><span class="nt">data</span><span class="p">:</span>
  1680. <span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">match</span><span class="p">:</span>
  1681. <span class="w"> </span><span class="nt">secretKey</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">mykey</span>
  1682. <span class="w"> </span><span class="nt">remoteRef</span><span class="p">:</span>
  1683. <span class="w"> </span><span class="nt">remoteKey</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">my-secret</span>
  1684. <span class="w"> </span><span class="nt">metadata</span><span class="p">:</span>
  1685. <span class="w"> </span><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">kubernetes.external-secrets.io/v1alpha1</span>
  1686. <span class="w"> </span><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">PushSecretMetadata</span>
  1687. <span class="w"> </span><span class="nt">spec</span><span class="p">:</span>
  1688. <span class="w"> </span><span class="nt">cmekKeyName</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;projects/my-project/locations/us-east1/keyRings/my-keyring/cryptoKeys/my-key&quot;</span>
  1689. </code></pre></div>
  1690. <p>Note: When using CMEK, you must specify a location in the SecretStore as customer-managed encryption keys are region-specific.</p>
  1691. <div class="highlight"><pre><span></span><code><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">external-secrets.io/v1</span>
  1692. <span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">SecretStore</span>
  1693. <span class="nt">metadata</span><span class="p">:</span>
  1694. <span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">gcp-secret-store</span>
  1695. <span class="nt">spec</span><span class="p">:</span>
  1696. <span class="w"> </span><span class="nt">provider</span><span class="p">:</span>
  1697. <span class="w"> </span><span class="nt">gcpsm</span><span class="p">:</span>
  1698. <span class="w"> </span><span class="nt">projectID</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">my-project</span>
  1699. <span class="w"> </span><span class="nt">location</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">us-east1</span><span class="w"> </span><span class="c1"># Required when using CMEK</span>
  1700. </code></pre></div>
  1701. <h2 id="regional-secrets">Regional Secrets</h2>
  1702. <p>GCP Secret Manager Regional Secrets are available to be used with both ExternalSecrets and PushSecrets.</p>
  1703. <p>In order to achieve so, add a <code>location</code> to your SecretStore definition:</p>
  1704. <div class="highlight"><pre><span></span><code><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">external-secrets.io/v1beta1</span>
  1705. <span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">SecretStore</span>
  1706. <span class="nt">metadata</span><span class="p">:</span>
  1707. <span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">gcp-secret-store</span>
  1708. <span class="nt">spec</span><span class="p">:</span>
  1709. <span class="w"> </span><span class="nt">provider</span><span class="p">:</span>
  1710. <span class="w"> </span><span class="nt">gcpsm</span><span class="p">:</span>
  1711. <span class="w"> </span><span class="nt">projectID</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">my-project</span>
  1712. <span class="w"> </span><span class="nt">location</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">us-east1</span><span class="w"> </span><span class="c1"># uses regional secrets on us-east1</span>
  1713. </code></pre></div>
  1714. </article>
  1715. </div>
  1716. <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
  1717. </div>
  1718. </main>
  1719. <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=6658a9eb-067d-49f1-94f2-b8b00f21451e" alt=""/>
  1720. <footer class="md-footer">
  1721. <div class="md-footer-meta md-typeset">
  1722. <div class="md-footer-meta__inner md-grid">
  1723. <div class="md-copyright">
  1724. <div class="md-copyright__highlight">
  1725. &copy; 2025 The external-secrets Authors.<br/>
  1726. &copy; 2025 The Linux Foundation. All rights reserved.<br/><br/>
  1727. The Linux Foundation has registered trademarks and uses trademarks.<br/>
  1728. For a list of trademarks of The Linux Foundation, please see our <a href="https://www.linuxfoundation.org/trademark-usage/">Trademark Usage page</a>.
  1729. </div>
  1730. Made with
  1731. <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
  1732. Material for MkDocs
  1733. </a>
  1734. </div>
  1735. </div>
  1736. </div>
  1737. </footer>
  1738. </div>
  1739. <div class="md-dialog" data-md-component="dialog">
  1740. <div class="md-dialog__inner md-typeset"></div>
  1741. </div>
  1742. <script id="__config" type="application/json">{"base": "../..", "features": ["navigation.tabs", "navigation.indexes", "navigation.expand"], "search": "../../assets/javascripts/workers/search.d50fe291.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": {"provider": "mike"}}</script>
  1743. <script src="../../assets/javascripts/bundle.13a4f30d.min.js"></script>
  1744. </body>
  1745. </html>