| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345 | ---# Source: rook-ceph/templates/cluster-rbac.yaml# Service account for Ceph OSDsapiVersion: v1kind: ServiceAccountmetadata:  name: rook-ceph-osd  namespace: aleph-ns # namespace:cluster  labels:    operator: rook    storage-backend: ceph    app.kubernetes.io/part-of: rook-ceph-operator    app.kubernetes.io/managed-by: Helm    app.kubernetes.io/created-by: helm    helm.sh/chart: "rook-ceph-v1.12.3"  # imagePullSecrets:#   - name: my-registry-secret---# Source: rook-ceph/templates/cluster-rbac.yaml# Service account for Ceph mgrsapiVersion: v1kind: ServiceAccountmetadata:  name: rook-ceph-mgr  namespace: aleph-ns # namespace:cluster  labels:    operator: rook    storage-backend: ceph    app.kubernetes.io/part-of: rook-ceph-operator    app.kubernetes.io/managed-by: Helm    app.kubernetes.io/created-by: helm    helm.sh/chart: "rook-ceph-v1.12.3"  # imagePullSecrets:#   - name: my-registry-secret---# Source: rook-ceph/templates/cluster-rbac.yaml# Service account for the job that reports the Ceph version in an imageapiVersion: v1kind: ServiceAccountmetadata:  name: rook-ceph-cmd-reporter  namespace: aleph-ns # namespace:cluster  labels:    operator: rook    storage-backend: ceph    app.kubernetes.io/part-of: rook-ceph-operator    app.kubernetes.io/managed-by: Helm    app.kubernetes.io/created-by: helm    helm.sh/chart: "rook-ceph-v1.12.3"  # imagePullSecrets:#   - name: my-registry-secret---# Source: rook-ceph/templates/cluster-rbac.yaml# Service account for job that purges OSDs from a Rook-Ceph clusterapiVersion: v1kind: ServiceAccountmetadata:  name: rook-ceph-purge-osd  namespace: aleph-ns # namespace:cluster  # imagePullSecrets:#   - name: my-registry-secret---# Source: rook-ceph/templates/cluster-rbac.yaml# Service account for RGW serverapiVersion: v1kind: ServiceAccountmetadata:  name: rook-ceph-rgw  namespace: aleph-ns # namespace:cluster  labels:    operator: rook    storage-backend: ceph    app.kubernetes.io/part-of: rook-ceph-operator    app.kubernetes.io/managed-by: Helm    app.kubernetes.io/created-by: helm    helm.sh/chart: "rook-ceph-v1.12.3"  # imagePullSecrets:#   - name: my-registry-secret---# Source: rook-ceph/templates/serviceaccount.yaml# Service account for the Rook-Ceph operatorapiVersion: v1kind: ServiceAccountmetadata:  name: rook-ceph-system  namespace: aleph-ns # namespace:operator  labels:    operator: rook    storage-backend: ceph    app.kubernetes.io/part-of: rook-ceph-operator    app.kubernetes.io/managed-by: Helm    app.kubernetes.io/created-by: helm    helm.sh/chart: "rook-ceph-v1.12.3"  # imagePullSecrets:#   - name: my-registry-secret---# Source: rook-ceph/templates/serviceaccount.yaml# Service account for the CephFS CSI driverapiVersion: v1kind: ServiceAccountmetadata:  name: rook-csi-cephfs-plugin-sa  namespace: aleph-ns # namespace:operator  # imagePullSecrets:#   - name: my-registry-secret---# Source: rook-ceph/templates/serviceaccount.yaml# Service account for the CephFS CSI provisionerapiVersion: v1kind: ServiceAccountmetadata:  name: rook-csi-cephfs-provisioner-sa  namespace: aleph-ns # namespace:operator  # imagePullSecrets:#   - name: my-registry-secret---# Source: rook-ceph/templates/serviceaccount.yaml# Service account for the RBD CSI driverapiVersion: v1kind: ServiceAccountmetadata:  name: rook-csi-rbd-plugin-sa  namespace: aleph-ns # namespace:operator  # imagePullSecrets:#   - name: my-registry-secret---# Source: rook-ceph/templates/serviceaccount.yaml# Service account for the RBD CSI provisionerapiVersion: v1kind: ServiceAccountmetadata:  name: rook-csi-rbd-provisioner-sa  namespace: aleph-ns # namespace:operator  # imagePullSecrets:#   - name: my-registry-secret---# Source: rook-ceph/templates/serviceaccount.yaml# Service account for Ceph COSI driverapiVersion: v1kind: ServiceAccountmetadata:  name: objectstorage-provisioner  namespace: aleph-ns # namespace:operator  labels:    app.kubernetes.io/part-of: container-object-storage-interface    app.kubernetes.io/component: driver-ceph    app.kubernetes.io/name: cosi-driver-ceph  # imagePullSecrets:#   - name: my-registry-secret---# Source: rook-ceph/templates/configmap.yaml# Operator settings that can be updated without an operator restart# Operator settings that require an operator restart are found in the operator env varskind: ConfigMapapiVersion: v1metadata:  name: rook-ceph-operator-configdata:  ROOK_LOG_LEVEL: "INFO"  ROOK_CEPH_COMMANDS_TIMEOUT_SECONDS: "15"  ROOK_OBC_WATCH_OPERATOR_NAMESPACE: "true"  ROOK_CEPH_ALLOW_LOOP_DEVICES: "false"  ROOK_DISABLE_ADMISSION_CONTROLLER: "true"  ROOK_CSI_ENABLE_RBD: "true"  ROOK_CSI_ENABLE_CEPHFS: "true"  CSI_ENABLE_CEPHFS_SNAPSHOTTER: "true"  CSI_ENABLE_NFS_SNAPSHOTTER: "true"  CSI_ENABLE_RBD_SNAPSHOTTER: "true"  CSI_PLUGIN_ENABLE_SELINUX_HOST_MOUNT: "false"  CSI_ENABLE_ENCRYPTION: "false"  CSI_ENABLE_OMAP_GENERATOR: "false"  CSI_ENABLE_HOST_NETWORK: "true"  CSI_ENABLE_METADATA: "false"  CSI_PLUGIN_PRIORITY_CLASSNAME: "system-node-critical"  CSI_PROVISIONER_PRIORITY_CLASSNAME: "system-cluster-critical"  CSI_RBD_FSGROUPPOLICY: "File"  CSI_CEPHFS_FSGROUPPOLICY: "File"  CSI_NFS_FSGROUPPOLICY: "File"  ROOK_CSI_ENABLE_GRPC_METRICS: "false"  ROOK_CSI_IMAGE_PULL_POLICY: "IfNotPresent"  CSI_ENABLE_CSIADDONS: "false"  ROOK_CSIADDONS_IMAGE: "quay.io/csiaddons/k8s-sidecar:v0.7.0"  CSI_ENABLE_TOPOLOGY: "false"  CSI_ENABLE_READ_AFFINITY : "false"  ROOK_CSI_ENABLE_NFS: "false"  CSI_FORCE_CEPHFS_KERNEL_CLIENT: "true"  CSI_GRPC_TIMEOUT_SECONDS: "150"  CSI_PROVISIONER_REPLICAS: "2"  CSI_RBD_PROVISIONER_RESOURCE: "- name : csi-provisioner\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 100m\n    limits:\n      memory: 256Mi\n      cpu: 200m\n- name : csi-resizer\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 100m\n    limits:\n      memory: 256Mi\n      cpu: 200m\n- name : csi-attacher\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 100m\n    limits:\n      memory: 256Mi\n      cpu: 200m\n- name : csi-snapshotter\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 100m\n    limits:\n      memory: 256Mi\n      cpu: 200m\n- name : csi-rbdplugin\n  resource:\n    requests:\n      memory: 512Mi\n      cpu: 250m\n    limits:\n      memory: 1Gi\n      cpu: 500m\n- name : csi-omap-generator\n  resource:\n    requests:\n      memory: 512Mi\n      cpu: 250m\n    limits:\n      memory: 1Gi\n      cpu: 500m\n- name : liveness-prometheus\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 50m\n    limits:\n      memory: 256Mi\n      cpu: 100m\n"  CSI_RBD_PLUGIN_RESOURCE: "- name : driver-registrar\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 50m\n    limits:\n      memory: 256Mi\n      cpu: 100m\n- name : csi-rbdplugin\n  resource:\n    requests:\n      memory: 512Mi\n      cpu: 250m\n    limits:\n      memory: 1Gi\n      cpu: 500m\n- name : liveness-prometheus\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 50m\n    limits:\n      memory: 256Mi\n      cpu: 100m\n"  CSI_CEPHFS_PROVISIONER_RESOURCE: "- name : csi-provisioner\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 100m\n    limits:\n      memory: 256Mi\n      cpu: 200m\n- name : csi-resizer\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 100m\n    limits:\n      memory: 256Mi\n      cpu: 200m\n- name : csi-attacher\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 100m\n    limits:\n      memory: 256Mi\n      cpu: 200m\n- name : csi-snapshotter\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 100m\n    limits:\n      memory: 256Mi\n      cpu: 200m\n- name : csi-cephfsplugin\n  resource:\n    requests:\n      memory: 512Mi\n      cpu: 250m\n    limits:\n      memory: 1Gi\n      cpu: 500m\n- name : liveness-prometheus\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 50m\n    limits:\n      memory: 256Mi\n      cpu: 100m\n"  CSI_CEPHFS_PLUGIN_RESOURCE: "- name : driver-registrar\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 50m\n    limits:\n      memory: 256Mi\n      cpu: 100m\n- name : csi-cephfsplugin\n  resource:\n    requests:\n      memory: 512Mi\n      cpu: 250m\n    limits:\n      memory: 1Gi\n      cpu: 500m\n- name : liveness-prometheus\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 50m\n    limits:\n      memory: 256Mi\n      cpu: 100m\n"  CSI_NFS_PROVISIONER_RESOURCE: "- name : csi-provisioner\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 100m\n    limits:\n      memory: 256Mi\n      cpu: 200m\n- name : csi-nfsplugin\n  resource:\n    requests:\n      memory: 512Mi\n      cpu: 250m\n    limits:\n      memory: 1Gi\n      cpu: 500m\n- name : csi-attacher\n  resource:\n    requests:\n      memory: 512Mi\n      cpu: 250m\n    limits:\n      memory: 1Gi\n      cpu: 500m\n"  CSI_NFS_PLUGIN_RESOURCE: "- name : driver-registrar\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 50m\n    limits:\n      memory: 256Mi\n      cpu: 100m\n- name : csi-nfsplugin\n  resource:\n    requests:\n      memory: 512Mi\n      cpu: 250m\n    limits:\n      memory: 1Gi\n      cpu: 500m\n"  CSI_CEPHFS_ATTACH_REQUIRED: "true"  CSI_RBD_ATTACH_REQUIRED: "true"  CSI_NFS_ATTACH_REQUIRED: "true"---# Source: rook-ceph/templates/resources.yamlapiVersion: apiextensions.k8s.io/v1kind: CustomResourceDefinitionmetadata:  annotations:    controller-gen.kubebuilder.io/version: v0.11.3    helm.sh/resource-policy: keep  creationTimestamp: null  name: cephblockpoolradosnamespaces.ceph.rook.iospec:  group: ceph.rook.io  names:    kind: CephBlockPoolRadosNamespace    listKind: CephBlockPoolRadosNamespaceList    plural: cephblockpoolradosnamespaces    singular: cephblockpoolradosnamespace  scope: Namespaced  versions:    - name: v1      schema:        openAPIV3Schema:          description: CephBlockPoolRadosNamespace represents a Ceph BlockPool Rados Namespace          properties:            apiVersion:              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'              type: string            kind:              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'              type: string            metadata:              type: object            spec:              description: Spec represents the specification of a Ceph BlockPool Rados Namespace              properties:                blockPoolName:                  description: BlockPoolName is the name of Ceph BlockPool. Typically it's the name of the CephBlockPool CR.                  type: string              required:                - blockPoolName              type: object            status:              description: Status represents the status of a CephBlockPool Rados Namespace              properties:                info:                  additionalProperties:                    type: string                  nullable: true                  type: object                phase:                  description: ConditionType represent a resource's status                  type: string              type: object              x-kubernetes-preserve-unknown-fields: true          required:            - metadata            - spec          type: object      served: true      storage: true      subresources:        status: {}---# Source: rook-ceph/templates/resources.yamlapiVersion: apiextensions.k8s.io/v1kind: CustomResourceDefinitionmetadata:  annotations:    controller-gen.kubebuilder.io/version: v0.11.3    helm.sh/resource-policy: keep  creationTimestamp: null  name: cephblockpools.ceph.rook.iospec:  group: ceph.rook.io  names:    kind: CephBlockPool    listKind: CephBlockPoolList    plural: cephblockpools    singular: cephblockpool  scope: Namespaced  versions:    - additionalPrinterColumns:        - jsonPath: .status.phase          name: Phase          type: string      name: v1      schema:        openAPIV3Schema:          description: CephBlockPool represents a Ceph Storage Pool          properties:            apiVersion:              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'              type: string            kind:              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'              type: string            metadata:              type: object            spec:              description: NamedBlockPoolSpec allows a block pool to be created with a non-default name. This is more specific than the NamedPoolSpec so we get schema validation on the allowed pool names that can be specified.              properties:                compressionMode:                  description: 'DEPRECATED: use Parameters instead, e.g., Parameters["compression_mode"] = "force" The inline compression mode in Bluestore OSD to set to (options are: none, passive, aggressive, force) Do NOT set a default value for kubebuilder as this will override the Parameters'                  enum:                    - none                    - passive                    - aggressive                    - force                    - ""                  nullable: true                  type: string                crushRoot:                  description: The root of the crush hierarchy utilized by the pool                  nullable: true                  type: string                deviceClass:                  description: The device class the OSD should set to for use in the pool                  nullable: true                  type: string                enableRBDStats:                  description: EnableRBDStats is used to enable gathering of statistics for all RBD images in the pool                  type: boolean                erasureCoded:                  description: The erasure code settings                  properties:                    algorithm:                      description: The algorithm for erasure coding                      type: string                    codingChunks:                      description: Number of coding chunks per object in an erasure coded storage pool (required for erasure-coded pool type). This is the number of OSDs that can be lost simultaneously before data cannot be recovered.                      minimum: 0                      type: integer                    dataChunks:                      description: Number of data chunks per object in an erasure coded storage pool (required for erasure-coded pool type). The number of chunks required to recover an object when any single OSD is lost is the same as dataChunks so be aware that the larger the number of data chunks, the higher the cost of recovery.                      minimum: 0                      type: integer                  required:                    - codingChunks                    - dataChunks                  type: object                failureDomain:                  description: 'The failure domain: osd/host/(region or zone if available) - technically also any type in the crush map'                  type: string                mirroring:                  description: The mirroring settings                  properties:                    enabled:                      description: Enabled whether this pool is mirrored or not                      type: boolean                    mode:                      description: 'Mode is the mirroring mode: either pool or image'                      type: string                    peers:                      description: Peers represents the peers spec                      nullable: true                      properties:                        secretNames:                          description: SecretNames represents the Kubernetes Secret names to add rbd-mirror or cephfs-mirror peers                          items:                            type: string                          type: array                      type: object                    snapshotSchedules:                      description: SnapshotSchedules is the scheduling of snapshot for mirrored images/pools                      items:                        description: SnapshotScheduleSpec represents the snapshot scheduling settings of a mirrored pool                        properties:                          interval:                            description: Interval represent the periodicity of the snapshot.                            type: string                          path:                            description: Path is the path to snapshot, only valid for CephFS                            type: string                          startTime:                            description: StartTime indicates when to start the snapshot                            type: string                        type: object                      type: array                  type: object                name:                  description: The desired name of the pool if different from the CephBlockPool CR name.                  enum:                    - device_health_metrics                    - .nfs                    - .mgr                  type: string                parameters:                  additionalProperties:                    type: string                  description: Parameters is a list of properties to enable on a given pool                  nullable: true                  type: object                  x-kubernetes-preserve-unknown-fields: true                quotas:                  description: The quota settings                  nullable: true                  properties:                    maxBytes:                      description: MaxBytes represents the quota in bytes Deprecated in favor of MaxSize                      format: int64                      type: integer                    maxObjects:                      description: MaxObjects represents the quota in objects                      format: int64                      type: integer                    maxSize:                      description: MaxSize represents the quota in bytes as a string                      pattern: ^[0-9]+[\.]?[0-9]*([KMGTPE]i|[kMGTPE])?$                      type: string                  type: object                replicated:                  description: The replication settings                  properties:                    hybridStorage:                      description: HybridStorage represents hybrid storage tier settings                      nullable: true                      properties:                        primaryDeviceClass:                          description: PrimaryDeviceClass represents high performance tier (for example SSD or NVME) for Primary OSD                          minLength: 1                          type: string                        secondaryDeviceClass:                          description: SecondaryDeviceClass represents low performance tier (for example HDDs) for remaining OSDs                          minLength: 1                          type: string                      required:                        - primaryDeviceClass                        - secondaryDeviceClass                      type: object                    replicasPerFailureDomain:                      description: ReplicasPerFailureDomain the number of replica in the specified failure domain                      minimum: 1                      type: integer                    requireSafeReplicaSize:                      description: RequireSafeReplicaSize if false allows you to set replica 1                      type: boolean                    size:                      description: Size - Number of copies per object in a replicated storage pool, including the object itself (required for replicated pool type)                      minimum: 0                      type: integer                    subFailureDomain:                      description: SubFailureDomain the name of the sub-failure domain                      type: string                    targetSizeRatio:                      description: TargetSizeRatio gives a hint (%) to Ceph in terms of expected consumption of the total cluster capacity                      type: number                  required:                    - size                  type: object                statusCheck:                  description: The mirroring statusCheck                  properties:                    mirror:                      description: HealthCheckSpec represents the health check of an object store bucket                      nullable: true                      properties:                        disabled:                          type: boolean                        interval:                          description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds                          type: string                        timeout:                          type: string                      type: object                  type: object                  x-kubernetes-preserve-unknown-fields: true              type: object            status:              description: CephBlockPoolStatus represents the mirroring status of Ceph Storage Pool              properties:                conditions:                  items:                    description: Condition represents a status condition on any Rook-Ceph Custom Resource.                    properties:                      lastHeartbeatTime:                        format: date-time                        type: string                      lastTransitionTime:                        format: date-time                        type: string                      message:                        type: string                      reason:                        description: ConditionReason is a reason for a condition                        type: string                      status:                        type: string                      type:                        description: ConditionType represent a resource's status                        type: string                    type: object                  type: array                info:                  additionalProperties:                    type: string                  nullable: true                  type: object                mirroringInfo:                  description: MirroringInfoSpec is the status of the pool mirroring                  properties:                    details:                      type: string                    lastChanged:                      type: string                    lastChecked:                      type: string                    mode:                      description: Mode is the mirroring mode                      type: string                    peers:                      description: Peers are the list of peer sites connected to that cluster                      items:                        description: PeersSpec contains peer details                        properties:                          client_name:                            description: ClientName is the CephX user used to connect to the peer                            type: string                          direction:                            description: Direction is the peer mirroring direction                            type: string                          mirror_uuid:                            description: MirrorUUID is the mirror UUID                            type: string                          site_name:                            description: SiteName is the current site name                            type: string                          uuid:                            description: UUID is the peer UUID                            type: string                        type: object                      type: array                    site_name:                      description: SiteName is the current site name                      type: string                  type: object                mirroringStatus:                  description: MirroringStatusSpec is the status of the pool mirroring                  properties:                    details:                      description: Details contains potential status errors                      type: string                    lastChanged:                      description: LastChanged is the last time time the status last changed                      type: string                    lastChecked:                      description: LastChecked is the last time time the status was checked                      type: string                    summary:                      description: Summary is the mirroring status summary                      properties:                        daemon_health:                          description: DaemonHealth is the health of the mirroring daemon                          type: string                        health:                          description: Health is the mirroring health                          type: string                        image_health:                          description: ImageHealth is the health of the mirrored image                          type: string                        states:                          description: States is the various state for all mirrored images                          nullable: true                          properties:                            error:                              description: Error is when the mirroring state is errored                              type: integer                            replaying:                              description: Replaying is when the replay of the mirroring journal is on-going                              type: integer                            starting_replay:                              description: StartingReplay is when the replay of the mirroring journal starts                              type: integer                            stopped:                              description: Stopped is when the mirroring state is stopped                              type: integer                            stopping_replay:                              description: StopReplaying is when the replay of the mirroring journal stops                              type: integer                            syncing:                              description: Syncing is when the image is syncing                              type: integer                            unknown:                              description: Unknown is when the mirroring state is unknown                              type: integer                          type: object                      type: object                  type: object                observedGeneration:                  description: ObservedGeneration is the latest generation observed by the controller.                  format: int64                  type: integer                phase:                  description: ConditionType represent a resource's status                  type: string                snapshotScheduleStatus:                  description: SnapshotScheduleStatusSpec is the status of the snapshot schedule                  properties:                    details:                      description: Details contains potential status errors                      type: string                    lastChanged:                      description: LastChanged is the last time time the status last changed                      type: string                    lastChecked:                      description: LastChecked is the last time time the status was checked                      type: string                    snapshotSchedules:                      description: SnapshotSchedules is the list of snapshots scheduled                      items:                        description: SnapshotSchedulesSpec is the list of snapshot scheduled for images in a pool                        properties:                          image:                            description: Image is the mirrored image                            type: string                          items:                            description: Items is the list schedules times for a given snapshot                            items:                              description: SnapshotSchedule is a schedule                              properties:                                interval:                                  description: Interval is the interval in which snapshots will be taken                                  type: string                                start_time:                                  description: StartTime is the snapshot starting time                                  type: string                              type: object                            type: array                          namespace:                            description: Namespace is the RADOS namespace the image is part of                            type: string                          pool:                            description: Pool is the pool name                            type: string                        type: object                      nullable: true                      type: array                  type: object              type: object              x-kubernetes-preserve-unknown-fields: true          required:            - metadata            - spec          type: object      served: true      storage: true      subresources:        status: {}---# Source: rook-ceph/templates/resources.yamlapiVersion: apiextensions.k8s.io/v1kind: CustomResourceDefinitionmetadata:  annotations:    controller-gen.kubebuilder.io/version: v0.11.3    helm.sh/resource-policy: keep  creationTimestamp: null  name: cephbucketnotifications.ceph.rook.iospec:  group: ceph.rook.io  names:    kind: CephBucketNotification    listKind: CephBucketNotificationList    plural: cephbucketnotifications    singular: cephbucketnotification  scope: Namespaced  versions:    - name: v1      schema:        openAPIV3Schema:          description: CephBucketNotification represents a Bucket Notifications          properties:            apiVersion:              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'              type: string            kind:              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'              type: string            metadata:              type: object            spec:              description: BucketNotificationSpec represent the spec of a Bucket Notification              properties:                events:                  description: List of events that should trigger the notification                  items:                    description: BucketNotificationSpec represent the event type of the bucket notification                    enum:                      - s3:ObjectCreated:*                      - s3:ObjectCreated:Put                      - s3:ObjectCreated:Post                      - s3:ObjectCreated:Copy                      - s3:ObjectCreated:CompleteMultipartUpload                      - s3:ObjectRemoved:*                      - s3:ObjectRemoved:Delete                      - s3:ObjectRemoved:DeleteMarkerCreated                    type: string                  type: array                filter:                  description: Spec of notification filter                  properties:                    keyFilters:                      description: Filters based on the object's key                      items:                        description: NotificationKeyFilterRule represent a single key rule in the Notification Filter spec                        properties:                          name:                            description: Name of the filter - prefix/suffix/regex                            enum:                              - prefix                              - suffix                              - regex                            type: string                          value:                            description: Value to filter on                            type: string                        required:                          - name                          - value                        type: object                      type: array                    metadataFilters:                      description: Filters based on the object's metadata                      items:                        description: NotificationFilterRule represent a single rule in the Notification Filter spec                        properties:                          name:                            description: Name of the metadata or tag                            minLength: 1                            type: string                          value:                            description: Value to filter on                            type: string                        required:                          - name                          - value                        type: object                      type: array                    tagFilters:                      description: Filters based on the object's tags                      items:                        description: NotificationFilterRule represent a single rule in the Notification Filter spec                        properties:                          name:                            description: Name of the metadata or tag                            minLength: 1                            type: string                          value:                            description: Value to filter on                            type: string                        required:                          - name                          - value                        type: object                      type: array                  type: object                topic:                  description: The name of the topic associated with this notification                  minLength: 1                  type: string              required:                - topic              type: object            status:              description: Status represents the status of an object              properties:                conditions:                  items:                    description: Condition represents a status condition on any Rook-Ceph Custom Resource.                    properties:                      lastHeartbeatTime:                        format: date-time                        type: string                      lastTransitionTime:                        format: date-time                        type: string                      message:                        type: string                      reason:                        description: ConditionReason is a reason for a condition                        type: string                      status:                        type: string                      type:                        description: ConditionType represent a resource's status                        type: string                    type: object                  type: array                observedGeneration:                  description: ObservedGeneration is the latest generation observed by the controller.                  format: int64                  type: integer                phase:                  type: string              type: object              x-kubernetes-preserve-unknown-fields: true          required:            - metadata            - spec          type: object      served: true      storage: true      subresources:        status: {}---# Source: rook-ceph/templates/resources.yamlapiVersion: apiextensions.k8s.io/v1kind: CustomResourceDefinitionmetadata:  annotations:    controller-gen.kubebuilder.io/version: v0.11.3    helm.sh/resource-policy: keep  creationTimestamp: null  name: cephbuckettopics.ceph.rook.iospec:  group: ceph.rook.io  names:    kind: CephBucketTopic    listKind: CephBucketTopicList    plural: cephbuckettopics    singular: cephbuckettopic  scope: Namespaced  versions:    - additionalPrinterColumns:        - jsonPath: .status.phase          name: Phase          type: string      name: v1      schema:        openAPIV3Schema:          description: CephBucketTopic represents a Ceph Object Topic for Bucket Notifications          properties:            apiVersion:              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'              type: string            kind:              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'              type: string            metadata:              type: object            spec:              description: BucketTopicSpec represent the spec of a Bucket Topic              properties:                endpoint:                  description: Contains the endpoint spec of the topic                  properties:                    amqp:                      description: Spec of AMQP endpoint                      properties:                        ackLevel:                          default: broker                          description: The ack level required for this topic (none/broker/routeable)                          enum:                            - none                            - broker                            - routeable                          type: string                        disableVerifySSL:                          description: Indicate whether the server certificate is validated by the client or not                          type: boolean                        exchange:                          description: Name of the exchange that is used to route messages based on topics                          minLength: 1                          type: string                        uri:                          description: The URI of the AMQP endpoint to push notification to                          minLength: 1                          type: string                      required:                        - exchange                        - uri                      type: object                    http:                      description: Spec of HTTP endpoint                      properties:                        disableVerifySSL:                          description: Indicate whether the server certificate is validated by the client or not                          type: boolean                        sendCloudEvents:                          description: 'Send the notifications with the CloudEvents header: https://github.com/cloudevents/spec/blob/main/cloudevents/adapters/aws-s3.md Supported for Ceph Quincy (v17) or newer.'                          type: boolean                        uri:                          description: The URI of the HTTP endpoint to push notification to                          minLength: 1                          type: string                      required:                        - uri                      type: object                    kafka:                      description: Spec of Kafka endpoint                      properties:                        ackLevel:                          default: broker                          description: The ack level required for this topic (none/broker)                          enum:                            - none                            - broker                          type: string                        disableVerifySSL:                          description: Indicate whether the server certificate is validated by the client or not                          type: boolean                        uri:                          description: The URI of the Kafka endpoint to push notification to                          minLength: 1                          type: string                        useSSL:                          description: Indicate whether to use SSL when communicating with the broker                          type: boolean                      required:                        - uri                      type: object                  type: object                objectStoreName:                  description: The name of the object store on which to define the topic                  minLength: 1                  type: string                objectStoreNamespace:                  description: The namespace of the object store on which to define the topic                  minLength: 1                  type: string                opaqueData:                  description: Data which is sent in each event                  type: string                persistent:                  description: Indication whether notifications to this endpoint are persistent or not                  type: boolean              required:                - endpoint                - objectStoreName                - objectStoreNamespace              type: object            status:              description: BucketTopicStatus represents the Status of a CephBucketTopic              properties:                ARN:                  description: The ARN of the topic generated by the RGW                  nullable: true                  type: string                observedGeneration:                  description: ObservedGeneration is the latest generation observed by the controller.                  format: int64                  type: integer                phase:                  type: string              type: object              x-kubernetes-preserve-unknown-fields: true          required:            - metadata            - spec          type: object      served: true      storage: true      subresources:        status: {}---# Source: rook-ceph/templates/resources.yamlapiVersion: apiextensions.k8s.io/v1kind: CustomResourceDefinitionmetadata:  annotations:    controller-gen.kubebuilder.io/version: v0.11.3    helm.sh/resource-policy: keep  creationTimestamp: null  name: cephclients.ceph.rook.iospec:  group: ceph.rook.io  names:    kind: CephClient    listKind: CephClientList    plural: cephclients    singular: cephclient  scope: Namespaced  versions:    - additionalPrinterColumns:        - jsonPath: .status.phase          name: Phase          type: string      name: v1      schema:        openAPIV3Schema:          description: CephClient represents a Ceph Client          properties:            apiVersion:              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'              type: string            kind:              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'              type: string            metadata:              type: object            spec:              description: Spec represents the specification of a Ceph Client              properties:                caps:                  additionalProperties:                    type: string                  type: object                  x-kubernetes-preserve-unknown-fields: true                name:                  type: string              required:                - caps              type: object            status:              description: Status represents the status of a Ceph Client              properties:                info:                  additionalProperties:                    type: string                  nullable: true                  type: object                observedGeneration:                  description: ObservedGeneration is the latest generation observed by the controller.                  format: int64                  type: integer                phase:                  description: ConditionType represent a resource's status                  type: string              type: object              x-kubernetes-preserve-unknown-fields: true          required:            - metadata            - spec          type: object      served: true      storage: true      subresources:        status: {}---# Source: rook-ceph/templates/resources.yamlapiVersion: apiextensions.k8s.io/v1kind: CustomResourceDefinitionmetadata:  annotations:    controller-gen.kubebuilder.io/version: v0.11.3    helm.sh/resource-policy: keep  creationTimestamp: null  name: cephclusters.ceph.rook.iospec:  group: ceph.rook.io  names:    kind: CephCluster    listKind: CephClusterList    plural: cephclusters    singular: cephcluster  scope: Namespaced  versions:    - additionalPrinterColumns:        - description: Directory used on the K8s nodes          jsonPath: .spec.dataDirHostPath          name: DataDirHostPath          type: string        - description: Number of MONs          jsonPath: .spec.mon.count          name: MonCount          type: string        - jsonPath: .metadata.creationTimestamp          name: Age          type: date        - jsonPath: .status.phase          name: Phase          type: string        - description: Message          jsonPath: .status.message          name: Message          type: string        - description: Ceph Health          jsonPath: .status.ceph.health          name: Health          type: string        - jsonPath: .spec.external.enable          name: External          type: boolean        - description: Ceph FSID          jsonPath: .status.ceph.fsid          name: FSID          type: string      name: v1      schema:        openAPIV3Schema:          description: CephCluster is a Ceph storage cluster          properties:            apiVersion:              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'              type: string            kind:              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'              type: string            metadata:              type: object            spec:              description: ClusterSpec represents the specification of Ceph Cluster              properties:                annotations:                  additionalProperties:                    additionalProperties:                      type: string                    description: Annotations are annotations                    type: object                  description: The annotations-related configuration to add/set on each Pod related object.                  nullable: true                  type: object                  x-kubernetes-preserve-unknown-fields: true                cephVersion:                  description: The version information that instructs Rook to orchestrate a particular version of Ceph.                  nullable: true                  properties:                    allowUnsupported:                      description: Whether to allow unsupported versions (do not set to true in production)                      type: boolean                    image:                      description: Image is the container image used to launch the ceph daemons, such as quay.io/ceph/ceph:<tag> The full list of images can be found at https://quay.io/repository/ceph/ceph?tab=tags                      type: string                    imagePullPolicy:                      description: ImagePullPolicy describes a policy for if/when to pull a container image One of Always, Never, IfNotPresent.                      enum:                        - IfNotPresent                        - Always                        - Never                        - ""                      type: string                  type: object                cleanupPolicy:                  description: Indicates user intent when deleting a cluster; blocks orchestration and should not be set if cluster deletion is not imminent.                  nullable: true                  properties:                    allowUninstallWithVolumes:                      description: AllowUninstallWithVolumes defines whether we can proceed with the uninstall if they are RBD images still present                      type: boolean                    confirmation:                      description: Confirmation represents the cleanup confirmation                      nullable: true                      pattern: ^$|^yes-really-destroy-data$                      type: string                    sanitizeDisks:                      description: SanitizeDisks represents way we sanitize disks                      nullable: true                      properties:                        dataSource:                          description: DataSource is the data source to use to sanitize the disk with                          enum:                            - zero                            - random                          type: string                        iteration:                          description: Iteration is the number of pass to apply the sanitizing                          format: int32                          type: integer                        method:                          description: Method is the method we use to sanitize disks                          enum:                            - complete                            - quick                          type: string                      type: object                  type: object                continueUpgradeAfterChecksEvenIfNotHealthy:                  description: ContinueUpgradeAfterChecksEvenIfNotHealthy defines if an upgrade should continue even if PGs are not clean                  type: boolean                crashCollector:                  description: A spec for the crash controller                  nullable: true                  properties:                    daysToRetain:                      description: DaysToRetain represents the number of days to retain crash until they get pruned                      type: integer                    disable:                      description: Disable determines whether we should enable the crash collector                      type: boolean                  type: object                dashboard:                  description: Dashboard settings                  nullable: true                  properties:                    enabled:                      description: Enabled determines whether to enable the dashboard                      type: boolean                    port:                      description: Port is the dashboard webserver port                      maximum: 65535                      minimum: 0                      type: integer                    ssl:                      description: SSL determines whether SSL should be used                      type: boolean                    urlPrefix:                      description: URLPrefix is a prefix for all URLs to use the dashboard with a reverse proxy                      type: string                  type: object                dataDirHostPath:                  description: The path on the host where config and data can be persisted                  pattern: ^/(\S+)                  type: string                disruptionManagement:                  description: A spec for configuring disruption management.                  nullable: true                  properties:                    machineDisruptionBudgetNamespace:                      description: Deprecated. Namespace to look for MDBs by the machineDisruptionBudgetController                      type: string                    manageMachineDisruptionBudgets:                      description: Deprecated. This enables management of machinedisruptionbudgets.                      type: boolean                    managePodBudgets:                      description: This enables management of poddisruptionbudgets                      type: boolean                    osdMaintenanceTimeout:                      description: OSDMaintenanceTimeout sets how many additional minutes the DOWN/OUT interval is for drained failure domains it only works if managePodBudgets is true. the default is 30 minutes                      format: int64                      type: integer                    pgHealthCheckTimeout:                      description: PGHealthCheckTimeout is the time (in minutes) that the operator will wait for the placement groups to become healthy (active+clean) after a drain was completed and OSDs came back up. Rook will continue with the next drain if the timeout exceeds. It only works if managePodBudgets is true. No values or 0 means that the operator will wait until the placement groups are healthy before unblocking the next drain.                      format: int64                      type: integer                  type: object                external:                  description: Whether the Ceph Cluster is running external to this Kubernetes cluster mon, mgr, osd, mds, and discover daemons will not be created for external clusters.                  nullable: true                  properties:                    enable:                      description: Enable determines whether external mode is enabled or not                      type: boolean                  type: object                  x-kubernetes-preserve-unknown-fields: true                healthCheck:                  description: Internal daemon healthchecks and liveness probe                  nullable: true                  properties:                    daemonHealth:                      description: DaemonHealth is the health check for a given daemon                      nullable: true                      properties:                        mon:                          description: Monitor represents the health check settings for the Ceph monitor                          nullable: true                          properties:                            disabled:                              type: boolean                            interval:                              description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds                              type: string                            timeout:                              type: string                          type: object                        osd:                          description: ObjectStorageDaemon represents the health check settings for the Ceph OSDs                          nullable: true                          properties:                            disabled:                              type: boolean                            interval:                              description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds                              type: string                            timeout:                              type: string                          type: object                        status:                          description: Status represents the health check settings for the Ceph health                          nullable: true                          properties:                            disabled:                              type: boolean                            interval:                              description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds                              type: string                            timeout:                              type: string                          type: object                      type: object                    livenessProbe:                      additionalProperties:                        description: ProbeSpec is a wrapper around Probe so it can be enabled or disabled for a Ceph daemon                        properties:                          disabled:                            description: Disabled determines whether probe is disable or not                            type: boolean                          probe:                            description: Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.                            properties:                              exec:                                description: Exec specifies the action to take.                                properties:                                  command:                                    description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.                                    items:                                      type: string                                    type: array                                type: object                              failureThreshold:                                description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.                                format: int32                                type: integer                              grpc:                                description: GRPC specifies an action involving a GRPC port.                                properties:                                  port:                                    description: Port number of the gRPC service. Number must be in the range 1 to 65535.                                    format: int32                                    type: integer                                  service:                                    description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC."                                    type: string                                required:                                  - port                                type: object                              httpGet:                                description: HTTPGet specifies the http request to perform.                                properties:                                  host:                                    description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.                                    type: string                                  httpHeaders:                                    description: Custom headers to set in the request. HTTP allows repeated headers.                                    items:                                      description: HTTPHeader describes a custom header to be used in HTTP probes                                      properties:                                        name:                                          description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.                                          type: string                                        value:                                          description: The header field value                                          type: string                                      required:                                        - name                                        - value                                      type: object                                    type: array                                  path:                                    description: Path to access on the HTTP server.                                    type: string                                  port:                                    anyOf:                                      - type: integer                                      - type: string                                    description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.                                    x-kubernetes-int-or-string: true                                  scheme:                                    description: Scheme to use for connecting to the host. Defaults to HTTP.                                    type: string                                required:                                  - port                                type: object                              initialDelaySeconds:                                description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'                                format: int32                                type: integer                              periodSeconds:                                description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.                                format: int32                                type: integer                              successThreshold:                                description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.                                format: int32                                type: integer                              tcpSocket:                                description: TCPSocket specifies an action involving a TCP port.                                properties:                                  host:                                    description: 'Optional: Host name to connect to, defaults to the pod IP.'                                    type: string                                  port:                                    anyOf:                                      - type: integer                                      - type: string                                    description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.                                    x-kubernetes-int-or-string: true                                required:                                  - port                                type: object                              terminationGracePeriodSeconds:                                description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.                                format: int64                                type: integer                              timeoutSeconds:                                description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'                                format: int32                                type: integer                            type: object                        type: object                      description: LivenessProbe allows changing the livenessProbe configuration for a given daemon                      type: object                    startupProbe:                      additionalProperties:                        description: ProbeSpec is a wrapper around Probe so it can be enabled or disabled for a Ceph daemon                        properties:                          disabled:                            description: Disabled determines whether probe is disable or not                            type: boolean                          probe:                            description: Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.                            properties:                              exec:                                description: Exec specifies the action to take.                                properties:                                  command:                                    description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.                                    items:                                      type: string                                    type: array                                type: object                              failureThreshold:                                description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.                                format: int32                                type: integer                              grpc:                                description: GRPC specifies an action involving a GRPC port.                                properties:                                  port:                                    description: Port number of the gRPC service. Number must be in the range 1 to 65535.                                    format: int32                                    type: integer                                  service:                                    description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC."                                    type: string                                required:                                  - port                                type: object                              httpGet:                                description: HTTPGet specifies the http request to perform.                                properties:                                  host:                                    description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.                                    type: string                                  httpHeaders:                                    description: Custom headers to set in the request. HTTP allows repeated headers.                                    items:                                      description: HTTPHeader describes a custom header to be used in HTTP probes                                      properties:                                        name:                                          description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.                                          type: string                                        value:                                          description: The header field value                                          type: string                                      required:                                        - name                                        - value                                      type: object                                    type: array                                  path:                                    description: Path to access on the HTTP server.                                    type: string                                  port:                                    anyOf:                                      - type: integer                                      - type: string                                    description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.                                    x-kubernetes-int-or-string: true                                  scheme:                                    description: Scheme to use for connecting to the host. Defaults to HTTP.                                    type: string                                required:                                  - port                                type: object                              initialDelaySeconds:                                description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'                                format: int32                                type: integer                              periodSeconds:                                description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.                                format: int32                                type: integer                              successThreshold:                                description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.                                format: int32                                type: integer                              tcpSocket:                                description: TCPSocket specifies an action involving a TCP port.                                properties:                                  host:                                    description: 'Optional: Host name to connect to, defaults to the pod IP.'                                    type: string                                  port:                                    anyOf:                                      - type: integer                                      - type: string                                    description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.                                    x-kubernetes-int-or-string: true                                required:                                  - port                                type: object                              terminationGracePeriodSeconds:                                description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.                                format: int64                                type: integer                              timeoutSeconds:                                description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'                                format: int32                                type: integer                            type: object                        type: object                      description: StartupProbe allows changing the startupProbe configuration for a given daemon                      type: object                  type: object                labels:                  additionalProperties:                    additionalProperties:                      type: string                    description: Labels are label for a given daemons                    type: object                  description: The labels-related configuration to add/set on each Pod related object.                  nullable: true                  type: object                  x-kubernetes-preserve-unknown-fields: true                logCollector:                  description: Logging represents loggings settings                  nullable: true                  properties:                    enabled:                      description: Enabled represents whether the log collector is enabled                      type: boolean                    maxLogSize:                      anyOf:                        - type: integer                        - type: string                      description: MaxLogSize is the maximum size of the log per ceph daemons. Must be at least 1M.                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                      x-kubernetes-int-or-string: true                    periodicity:                      description: Periodicity is the periodicity of the log rotation.                      pattern: ^$|^(hourly|daily|weekly|monthly|1h|24h|1d)$                      type: string                  type: object                mgr:                  description: A spec for mgr related options                  nullable: true                  properties:                    allowMultiplePerNode:                      description: AllowMultiplePerNode allows to run multiple managers on the same node (not recommended)                      type: boolean                    count:                      description: Count is the number of manager to run                      maximum: 2                      minimum: 0                      type: integer                    modules:                      description: Modules is the list of ceph manager modules to enable/disable                      items:                        description: Module represents mgr modules that the user wants to enable or disable                        properties:                          enabled:                            description: Enabled determines whether a module should be enabled or not                            type: boolean                          name:                            description: Name is the name of the ceph manager module                            type: string                        type: object                      nullable: true                      type: array                  type: object                mon:                  description: A spec for mon related options                  nullable: true                  properties:                    allowMultiplePerNode:                      description: AllowMultiplePerNode determines if we can run multiple monitors on the same node (not recommended)                      type: boolean                    count:                      description: Count is the number of Ceph monitors                      maximum: 9                      minimum: 0                      type: integer                    failureDomainLabel:                      type: string                    stretchCluster:                      description: StretchCluster is the stretch cluster specification                      properties:                        failureDomainLabel:                          description: 'FailureDomainLabel the failure domain name (e,g: zone)'                          type: string                        subFailureDomain:                          description: SubFailureDomain is the failure domain within a zone                          type: string                        zones:                          description: Zones is the list of zones                          items:                            description: MonZoneSpec represents the specification of a zone in a Ceph Cluster                            properties:                              arbiter:                                description: Arbiter determines if the zone contains the arbiter used for stretch cluster mode                                type: boolean                              name:                                description: Name is the name of the zone                                type: string                              volumeClaimTemplate:                                description: VolumeClaimTemplate is the PVC template                                properties:                                  apiVersion:                                    description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'                                    type: string                                  kind:                                    description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'                                    type: string                                  metadata:                                    description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata'                                    properties:                                      annotations:                                        additionalProperties:                                          type: string                                        type: object                                      finalizers:                                        items:                                          type: string                                        type: array                                      labels:                                        additionalProperties:                                          type: string                                        type: object                                      name:                                        type: string                                      namespace:                                        type: string                                    type: object                                  spec:                                    description: 'spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'                                    properties:                                      accessModes:                                        description: 'accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'                                        items:                                          type: string                                        type: array                                      dataSource:                                        description: 'dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.'                                        properties:                                          apiGroup:                                            description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.                                            type: string                                          kind:                                            description: Kind is the type of resource being referenced                                            type: string                                          name:                                            description: Name is the name of resource being referenced                                            type: string                                        required:                                          - kind                                          - name                                        type: object                                        x-kubernetes-map-type: atomic                                      dataSourceRef:                                        description: 'dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn''t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn''t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.'                                        properties:                                          apiGroup:                                            description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.                                            type: string                                          kind:                                            description: Kind is the type of resource being referenced                                            type: string                                          name:                                            description: Name is the name of resource being referenced                                            type: string                                          namespace:                                            description: Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.                                            type: string                                        required:                                          - kind                                          - name                                        type: object                                      resources:                                        description: 'resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'                                        properties:                                          claims:                                            description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers."                                            items:                                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.                                              properties:                                                name:                                                  description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.                                                  type: string                                              required:                                                - name                                              type: object                                            type: array                                            x-kubernetes-list-map-keys:                                              - name                                            x-kubernetes-list-type: map                                          limits:                                            additionalProperties:                                              anyOf:                                                - type: integer                                                - type: string                                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                              x-kubernetes-int-or-string: true                                            description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                                            type: object                                          requests:                                            additionalProperties:                                              anyOf:                                                - type: integer                                                - type: string                                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                              x-kubernetes-int-or-string: true                                            description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                                            type: object                                        type: object                                      selector:                                        description: selector is a label query over volumes to consider for binding.                                        properties:                                          matchExpressions:                                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                            items:                                              description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                              properties:                                                key:                                                  description: key is the label key that the selector applies to.                                                  type: string                                                operator:                                                  description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                  type: string                                                values:                                                  description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                  items:                                                    type: string                                                  type: array                                              required:                                                - key                                                - operator                                              type: object                                            type: array                                          matchLabels:                                            additionalProperties:                                              type: string                                            description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                            type: object                                        type: object                                        x-kubernetes-map-type: atomic                                      storageClassName:                                        description: 'storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'                                        type: string                                      volumeMode:                                        description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.                                        type: string                                      volumeName:                                        description: volumeName is the binding reference to the PersistentVolume backing this claim.                                        type: string                                    type: object                                  status:                                    description: 'status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'                                    properties:                                      accessModes:                                        description: 'accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'                                        items:                                          type: string                                        type: array                                      allocatedResourceStatuses:                                        additionalProperties:                                          description: When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource that it does not recognizes, then it should ignore that update and let other controllers handle it.                                          type: string                                        description: "allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \n ClaimResourceStatus can be in any of following states: - ControllerResizeInProgress: State set when resize controller starts resizing the volume in control-plane. - ControllerResizeFailed: State set when resize has failed in resize controller with a terminal error. - NodeResizePending: State set when resize controller has finished resizing the volume but further resizing of volume is needed on the node. - NodeResizeInProgress: State set when kubelet starts resizing the volume. - NodeResizeFailed: State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed. For example: if expanding a PVC for more capacity - this field can be one of the following states: - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeFailed\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizePending\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeFailed\" When this field is not set, it means that no resize operation is in progress for the given PVC. \n A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature."                                        type: object                                        x-kubernetes-map-type: granular                                      allocatedResources:                                        additionalProperties:                                          anyOf:                                            - type: integer                                            - type: string                                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                          x-kubernetes-int-or-string: true                                        description: "allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \n Capacity reported here may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. \n A controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature."                                        type: object                                      capacity:                                        additionalProperties:                                          anyOf:                                            - type: integer                                            - type: string                                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                          x-kubernetes-int-or-string: true                                        description: capacity represents the actual resources of the underlying volume.                                        type: object                                      conditions:                                        description: conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.                                        items:                                          description: PersistentVolumeClaimCondition contains details about state of pvc                                          properties:                                            lastProbeTime:                                              description: lastProbeTime is the time we probed the condition.                                              format: date-time                                              type: string                                            lastTransitionTime:                                              description: lastTransitionTime is the time the condition transitioned from one status to another.                                              format: date-time                                              type: string                                            message:                                              description: message is the human-readable message indicating details about last transition.                                              type: string                                            reason:                                              description: reason is a unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports "ResizeStarted" that means the underlying persistent volume is being resized.                                              type: string                                            status:                                              type: string                                            type:                                              description: PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type                                              type: string                                          required:                                            - status                                            - type                                          type: object                                        type: array                                      phase:                                        description: phase represents the current phase of PersistentVolumeClaim.                                        type: string                                    type: object                                type: object                                x-kubernetes-preserve-unknown-fields: true                            type: object                          nullable: true                          type: array                      type: object                    volumeClaimTemplate:                      description: VolumeClaimTemplate is the PVC definition                      properties:                        apiVersion:                          description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'                          type: string                        kind:                          description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'                          type: string                        metadata:                          description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata'                          properties:                            annotations:                              additionalProperties:                                type: string                              type: object                            finalizers:                              items:                                type: string                              type: array                            labels:                              additionalProperties:                                type: string                              type: object                            name:                              type: string                            namespace:                              type: string                          type: object                        spec:                          description: 'spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'                          properties:                            accessModes:                              description: 'accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'                              items:                                type: string                              type: array                            dataSource:                              description: 'dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.'                              properties:                                apiGroup:                                  description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.                                  type: string                                kind:                                  description: Kind is the type of resource being referenced                                  type: string                                name:                                  description: Name is the name of resource being referenced                                  type: string                              required:                                - kind                                - name                              type: object                              x-kubernetes-map-type: atomic                            dataSourceRef:                              description: 'dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn''t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn''t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.'                              properties:                                apiGroup:                                  description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.                                  type: string                                kind:                                  description: Kind is the type of resource being referenced                                  type: string                                name:                                  description: Name is the name of resource being referenced                                  type: string                                namespace:                                  description: Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.                                  type: string                              required:                                - kind                                - name                              type: object                            resources:                              description: 'resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'                              properties:                                claims:                                  description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers."                                  items:                                    description: ResourceClaim references one entry in PodSpec.ResourceClaims.                                    properties:                                      name:                                        description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.                                        type: string                                    required:                                      - name                                    type: object                                  type: array                                  x-kubernetes-list-map-keys:                                    - name                                  x-kubernetes-list-type: map                                limits:                                  additionalProperties:                                    anyOf:                                      - type: integer                                      - type: string                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                    x-kubernetes-int-or-string: true                                  description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                                  type: object                                requests:                                  additionalProperties:                                    anyOf:                                      - type: integer                                      - type: string                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                    x-kubernetes-int-or-string: true                                  description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                                  type: object                              type: object                            selector:                              description: selector is a label query over volumes to consider for binding.                              properties:                                matchExpressions:                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                  items:                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                    properties:                                      key:                                        description: key is the label key that the selector applies to.                                        type: string                                      operator:                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                        type: string                                      values:                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                        items:                                          type: string                                        type: array                                    required:                                      - key                                      - operator                                    type: object                                  type: array                                matchLabels:                                  additionalProperties:                                    type: string                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                  type: object                              type: object                              x-kubernetes-map-type: atomic                            storageClassName:                              description: 'storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'                              type: string                            volumeMode:                              description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.                              type: string                            volumeName:                              description: volumeName is the binding reference to the PersistentVolume backing this claim.                              type: string                          type: object                        status:                          description: 'status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'                          properties:                            accessModes:                              description: 'accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'                              items:                                type: string                              type: array                            allocatedResourceStatuses:                              additionalProperties:                                description: When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource that it does not recognizes, then it should ignore that update and let other controllers handle it.                                type: string                              description: "allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \n ClaimResourceStatus can be in any of following states: - ControllerResizeInProgress: State set when resize controller starts resizing the volume in control-plane. - ControllerResizeFailed: State set when resize has failed in resize controller with a terminal error. - NodeResizePending: State set when resize controller has finished resizing the volume but further resizing of volume is needed on the node. - NodeResizeInProgress: State set when kubelet starts resizing the volume. - NodeResizeFailed: State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed. For example: if expanding a PVC for more capacity - this field can be one of the following states: - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeFailed\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizePending\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeFailed\" When this field is not set, it means that no resize operation is in progress for the given PVC. \n A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature."                              type: object                              x-kubernetes-map-type: granular                            allocatedResources:                              additionalProperties:                                anyOf:                                  - type: integer                                  - type: string                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                x-kubernetes-int-or-string: true                              description: "allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \n Capacity reported here may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. \n A controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature."                              type: object                            capacity:                              additionalProperties:                                anyOf:                                  - type: integer                                  - type: string                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                x-kubernetes-int-or-string: true                              description: capacity represents the actual resources of the underlying volume.                              type: object                            conditions:                              description: conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.                              items:                                description: PersistentVolumeClaimCondition contains details about state of pvc                                properties:                                  lastProbeTime:                                    description: lastProbeTime is the time we probed the condition.                                    format: date-time                                    type: string                                  lastTransitionTime:                                    description: lastTransitionTime is the time the condition transitioned from one status to another.                                    format: date-time                                    type: string                                  message:                                    description: message is the human-readable message indicating details about last transition.                                    type: string                                  reason:                                    description: reason is a unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports "ResizeStarted" that means the underlying persistent volume is being resized.                                    type: string                                  status:                                    type: string                                  type:                                    description: PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type                                    type: string                                required:                                  - status                                  - type                                type: object                              type: array                            phase:                              description: phase represents the current phase of PersistentVolumeClaim.                              type: string                          type: object                      type: object                      x-kubernetes-preserve-unknown-fields: true                    zones:                      description: Zones are specified when we want to provide zonal awareness to mons                      items:                        description: MonZoneSpec represents the specification of a zone in a Ceph Cluster                        properties:                          arbiter:                            description: Arbiter determines if the zone contains the arbiter used for stretch cluster mode                            type: boolean                          name:                            description: Name is the name of the zone                            type: string                          volumeClaimTemplate:                            description: VolumeClaimTemplate is the PVC template                            properties:                              apiVersion:                                description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'                                type: string                              kind:                                description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'                                type: string                              metadata:                                description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata'                                properties:                                  annotations:                                    additionalProperties:                                      type: string                                    type: object                                  finalizers:                                    items:                                      type: string                                    type: array                                  labels:                                    additionalProperties:                                      type: string                                    type: object                                  name:                                    type: string                                  namespace:                                    type: string                                type: object                              spec:                                description: 'spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'                                properties:                                  accessModes:                                    description: 'accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'                                    items:                                      type: string                                    type: array                                  dataSource:                                    description: 'dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.'                                    properties:                                      apiGroup:                                        description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.                                        type: string                                      kind:                                        description: Kind is the type of resource being referenced                                        type: string                                      name:                                        description: Name is the name of resource being referenced                                        type: string                                    required:                                      - kind                                      - name                                    type: object                                    x-kubernetes-map-type: atomic                                  dataSourceRef:                                    description: 'dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn''t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn''t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.'                                    properties:                                      apiGroup:                                        description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.                                        type: string                                      kind:                                        description: Kind is the type of resource being referenced                                        type: string                                      name:                                        description: Name is the name of resource being referenced                                        type: string                                      namespace:                                        description: Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.                                        type: string                                    required:                                      - kind                                      - name                                    type: object                                  resources:                                    description: 'resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'                                    properties:                                      claims:                                        description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers."                                        items:                                          description: ResourceClaim references one entry in PodSpec.ResourceClaims.                                          properties:                                            name:                                              description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.                                              type: string                                          required:                                            - name                                          type: object                                        type: array                                        x-kubernetes-list-map-keys:                                          - name                                        x-kubernetes-list-type: map                                      limits:                                        additionalProperties:                                          anyOf:                                            - type: integer                                            - type: string                                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                          x-kubernetes-int-or-string: true                                        description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                                        type: object                                      requests:                                        additionalProperties:                                          anyOf:                                            - type: integer                                            - type: string                                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                          x-kubernetes-int-or-string: true                                        description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                                        type: object                                    type: object                                  selector:                                    description: selector is a label query over volumes to consider for binding.                                    properties:                                      matchExpressions:                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                        items:                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: key is the label key that the selector applies to.                                              type: string                                            operator:                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                              type: string                                            values:                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchLabels:                                        additionalProperties:                                          type: string                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                        type: object                                    type: object                                    x-kubernetes-map-type: atomic                                  storageClassName:                                    description: 'storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'                                    type: string                                  volumeMode:                                    description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.                                    type: string                                  volumeName:                                    description: volumeName is the binding reference to the PersistentVolume backing this claim.                                    type: string                                type: object                              status:                                description: 'status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'                                properties:                                  accessModes:                                    description: 'accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'                                    items:                                      type: string                                    type: array                                  allocatedResourceStatuses:                                    additionalProperties:                                      description: When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource that it does not recognizes, then it should ignore that update and let other controllers handle it.                                      type: string                                    description: "allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \n ClaimResourceStatus can be in any of following states: - ControllerResizeInProgress: State set when resize controller starts resizing the volume in control-plane. - ControllerResizeFailed: State set when resize has failed in resize controller with a terminal error. - NodeResizePending: State set when resize controller has finished resizing the volume but further resizing of volume is needed on the node. - NodeResizeInProgress: State set when kubelet starts resizing the volume. - NodeResizeFailed: State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed. For example: if expanding a PVC for more capacity - this field can be one of the following states: - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeFailed\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizePending\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeFailed\" When this field is not set, it means that no resize operation is in progress for the given PVC. \n A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature."                                    type: object                                    x-kubernetes-map-type: granular                                  allocatedResources:                                    additionalProperties:                                      anyOf:                                        - type: integer                                        - type: string                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                      x-kubernetes-int-or-string: true                                    description: "allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \n Capacity reported here may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. \n A controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature."                                    type: object                                  capacity:                                    additionalProperties:                                      anyOf:                                        - type: integer                                        - type: string                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                      x-kubernetes-int-or-string: true                                    description: capacity represents the actual resources of the underlying volume.                                    type: object                                  conditions:                                    description: conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.                                    items:                                      description: PersistentVolumeClaimCondition contains details about state of pvc                                      properties:                                        lastProbeTime:                                          description: lastProbeTime is the time we probed the condition.                                          format: date-time                                          type: string                                        lastTransitionTime:                                          description: lastTransitionTime is the time the condition transitioned from one status to another.                                          format: date-time                                          type: string                                        message:                                          description: message is the human-readable message indicating details about last transition.                                          type: string                                        reason:                                          description: reason is a unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports "ResizeStarted" that means the underlying persistent volume is being resized.                                          type: string                                        status:                                          type: string                                        type:                                          description: PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type                                          type: string                                      required:                                        - status                                        - type                                      type: object                                    type: array                                  phase:                                    description: phase represents the current phase of PersistentVolumeClaim.                                    type: string                                type: object                            type: object                            x-kubernetes-preserve-unknown-fields: true                        type: object                      type: array                  type: object                monitoring:                  description: Prometheus based Monitoring settings                  nullable: true                  properties:                    enabled:                      description: Enabled determines whether to create the prometheus rules for the ceph cluster. If true, the prometheus types must exist or the creation will fail. Default is false.                      type: boolean                    externalMgrEndpoints:                      description: ExternalMgrEndpoints points to an existing Ceph prometheus exporter endpoint                      items:                        description: EndpointAddress is a tuple that describes single IP address.                        properties:                          hostname:                            description: The Hostname of this endpoint                            type: string                          ip:                            description: The IP of this endpoint. May not be loopback (127.0.0.0/8 or ::1), link-local (169.254.0.0/16 or fe80::/10), or link-local multicast (224.0.0.0/24 or ff02::/16).                            type: string                          nodeName:                            description: 'Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.'                            type: string                          targetRef:                            description: Reference to object providing the endpoint.                            properties:                              apiVersion:                                description: API version of the referent.                                type: string                              fieldPath:                                description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.'                                type: string                              kind:                                description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'                                type: string                              name:                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'                                type: string                              namespace:                                description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'                                type: string                              resourceVersion:                                description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'                                type: string                              uid:                                description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'                                type: string                            type: object                            x-kubernetes-map-type: atomic                        required:                          - ip                        type: object                        x-kubernetes-map-type: atomic                      nullable: true                      type: array                    externalMgrPrometheusPort:                      description: ExternalMgrPrometheusPort Prometheus exporter port                      maximum: 65535                      minimum: 0                      type: integer                    interval:                      description: Interval determines prometheus scrape interval                      type: string                    metricsDisabled:                      description: Whether to disable the metrics reported by Ceph. If false, the prometheus mgr module and Ceph exporter are enabled. If true, the prometheus mgr module and Ceph exporter are both disabled. Default is false.                      type: boolean                    port:                      description: Port is the prometheus server port                      maximum: 65535                      minimum: 0                      type: integer                  type: object                network:                  description: Network related configuration                  nullable: true                  properties:                    connections:                      description: Settings for network connections such as compression and encryption across the wire.                      nullable: true                      properties:                        compression:                          description: Compression settings for the network connections.                          nullable: true                          properties:                            enabled:                              description: Whether to compress the data in transit across the wire. The default is not set. Requires Ceph Quincy (v17) or newer.                              type: boolean                          type: object                        encryption:                          description: Encryption settings for the network connections.                          nullable: true                          properties:                            enabled:                              description: Whether to encrypt the data in transit across the wire to prevent eavesdropping the data on the network. The default is not set. Even if encryption is not enabled, clients still establish a strong initial authentication for the connection and data integrity is still validated with a crc check. When encryption is enabled, all communication between clients and Ceph daemons, or between Ceph daemons will be encrypted.                              type: boolean                          type: object                        requireMsgr2:                          description: Whether to require msgr2 (port 3300) even if compression or encryption are not enabled. If true, the msgr1 port (6789) will be disabled. Requires a kernel that supports msgr2 (kernel 5.11 or CentOS 8.4 or newer).                          type: boolean                      type: object                    dualStack:                      description: DualStack determines whether Ceph daemons should listen on both IPv4 and IPv6                      type: boolean                    hostNetwork:                      description: HostNetwork to enable host network                      type: boolean                    ipFamily:                      description: IPFamily is the single stack IPv6 or IPv4 protocol                      enum:                        - IPv4                        - IPv6                      nullable: true                      type: string                    multiClusterService:                      description: Enable multiClusterService to export the Services between peer clusters                      properties:                        clusterID:                          description: 'ClusterID uniquely identifies a cluster. It is used as a prefix to nslookup exported services. For example: <clusterid>.<svc>.<ns>.svc.clusterset.local'                          type: string                        enabled:                          description: Enable multiClusterService to export the mon and OSD services to peer cluster. Ensure that peer clusters are connected using an MCS API compatible application, like Globalnet Submariner.                          type: boolean                      type: object                    provider:                      description: Provider is what provides network connectivity to the cluster e.g. "host" or "multus"                      nullable: true                      type: string                    selectors:                      additionalProperties:                        type: string                      description: Selectors string values describe what networks will be used to connect the cluster. Meanwhile the keys describe each network respective responsibilities or any metadata storage provider decide.                      nullable: true                      type: object                  type: object                  x-kubernetes-preserve-unknown-fields: true                placement:                  additionalProperties:                    description: Placement is the placement for an object                    properties:                      nodeAffinity:                        description: NodeAffinity is a group of node affinity scheduling rules                        properties:                          preferredDuringSchedulingIgnoredDuringExecution:                            description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.                            items:                              description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).                              properties:                                preference:                                  description: A node selector term, associated with the corresponding weight.                                  properties:                                    matchExpressions:                                      description: A list of node selector requirements by node's labels.                                      items:                                        description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                        properties:                                          key:                                            description: The label key that the selector applies to.                                            type: string                                          operator:                                            description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                            type: string                                          values:                                            description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                            items:                                              type: string                                            type: array                                        required:                                          - key                                          - operator                                        type: object                                      type: array                                    matchFields:                                      description: A list of node selector requirements by node's fields.                                      items:                                        description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                        properties:                                          key:                                            description: The label key that the selector applies to.                                            type: string                                          operator:                                            description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                            type: string                                          values:                                            description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                            items:                                              type: string                                            type: array                                        required:                                          - key                                          - operator                                        type: object                                      type: array                                  type: object                                  x-kubernetes-map-type: atomic                                weight:                                  description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.                                  format: int32                                  type: integer                              required:                                - preference                                - weight                              type: object                            type: array                          requiredDuringSchedulingIgnoredDuringExecution:                            description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.                            properties:                              nodeSelectorTerms:                                description: Required. A list of node selector terms. The terms are ORed.                                items:                                  description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.                                  properties:                                    matchExpressions:                                      description: A list of node selector requirements by node's labels.                                      items:                                        description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                        properties:                                          key:                                            description: The label key that the selector applies to.                                            type: string                                          operator:                                            description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                            type: string                                          values:                                            description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                            items:                                              type: string                                            type: array                                        required:                                          - key                                          - operator                                        type: object                                      type: array                                    matchFields:                                      description: A list of node selector requirements by node's fields.                                      items:                                        description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                        properties:                                          key:                                            description: The label key that the selector applies to.                                            type: string                                          operator:                                            description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                            type: string                                          values:                                            description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                            items:                                              type: string                                            type: array                                        required:                                          - key                                          - operator                                        type: object                                      type: array                                  type: object                                  x-kubernetes-map-type: atomic                                type: array                            required:                              - nodeSelectorTerms                            type: object                            x-kubernetes-map-type: atomic                        type: object                      podAffinity:                        description: PodAffinity is a group of inter pod affinity scheduling rules                        properties:                          preferredDuringSchedulingIgnoredDuringExecution:                            description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.                            items:                              description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)                              properties:                                podAffinityTerm:                                  description: Required. A pod affinity term, associated with the corresponding weight.                                  properties:                                    labelSelector:                                      description: A label query over a set of resources, in this case pods.                                      properties:                                        matchExpressions:                                          description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                          items:                                            description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                            properties:                                              key:                                                description: key is the label key that the selector applies to.                                                type: string                                              operator:                                                description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                type: string                                              values:                                                description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                items:                                                  type: string                                                type: array                                            required:                                              - key                                              - operator                                            type: object                                          type: array                                        matchLabels:                                          additionalProperties:                                            type: string                                          description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                          type: object                                      type: object                                      x-kubernetes-map-type: atomic                                    namespaceSelector:                                      description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                      properties:                                        matchExpressions:                                          description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                          items:                                            description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                            properties:                                              key:                                                description: key is the label key that the selector applies to.                                                type: string                                              operator:                                                description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                type: string                                              values:                                                description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                items:                                                  type: string                                                type: array                                            required:                                              - key                                              - operator                                            type: object                                          type: array                                        matchLabels:                                          additionalProperties:                                            type: string                                          description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                          type: object                                      type: object                                      x-kubernetes-map-type: atomic                                    namespaces:                                      description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                      items:                                        type: string                                      type: array                                    topologyKey:                                      description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                      type: string                                  required:                                    - topologyKey                                  type: object                                weight:                                  description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.                                  format: int32                                  type: integer                              required:                                - podAffinityTerm                                - weight                              type: object                            type: array                          requiredDuringSchedulingIgnoredDuringExecution:                            description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.                            items:                              description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running                              properties:                                labelSelector:                                  description: A label query over a set of resources, in this case pods.                                  properties:                                    matchExpressions:                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                      items:                                        description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                        properties:                                          key:                                            description: key is the label key that the selector applies to.                                            type: string                                          operator:                                            description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                            type: string                                          values:                                            description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                            items:                                              type: string                                            type: array                                        required:                                          - key                                          - operator                                        type: object                                      type: array                                    matchLabels:                                      additionalProperties:                                        type: string                                      description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                      type: object                                  type: object                                  x-kubernetes-map-type: atomic                                namespaceSelector:                                  description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                  properties:                                    matchExpressions:                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                      items:                                        description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                        properties:                                          key:                                            description: key is the label key that the selector applies to.                                            type: string                                          operator:                                            description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                            type: string                                          values:                                            description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                            items:                                              type: string                                            type: array                                        required:                                          - key                                          - operator                                        type: object                                      type: array                                    matchLabels:                                      additionalProperties:                                        type: string                                      description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                      type: object                                  type: object                                  x-kubernetes-map-type: atomic                                namespaces:                                  description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                  items:                                    type: string                                  type: array                                topologyKey:                                  description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                  type: string                              required:                                - topologyKey                              type: object                            type: array                        type: object                      podAntiAffinity:                        description: PodAntiAffinity is a group of inter pod anti affinity scheduling rules                        properties:                          preferredDuringSchedulingIgnoredDuringExecution:                            description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.                            items:                              description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)                              properties:                                podAffinityTerm:                                  description: Required. A pod affinity term, associated with the corresponding weight.                                  properties:                                    labelSelector:                                      description: A label query over a set of resources, in this case pods.                                      properties:                                        matchExpressions:                                          description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                          items:                                            description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                            properties:                                              key:                                                description: key is the label key that the selector applies to.                                                type: string                                              operator:                                                description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                type: string                                              values:                                                description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                items:                                                  type: string                                                type: array                                            required:                                              - key                                              - operator                                            type: object                                          type: array                                        matchLabels:                                          additionalProperties:                                            type: string                                          description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                          type: object                                      type: object                                      x-kubernetes-map-type: atomic                                    namespaceSelector:                                      description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                      properties:                                        matchExpressions:                                          description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                          items:                                            description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                            properties:                                              key:                                                description: key is the label key that the selector applies to.                                                type: string                                              operator:                                                description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                type: string                                              values:                                                description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                items:                                                  type: string                                                type: array                                            required:                                              - key                                              - operator                                            type: object                                          type: array                                        matchLabels:                                          additionalProperties:                                            type: string                                          description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                          type: object                                      type: object                                      x-kubernetes-map-type: atomic                                    namespaces:                                      description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                      items:                                        type: string                                      type: array                                    topologyKey:                                      description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                      type: string                                  required:                                    - topologyKey                                  type: object                                weight:                                  description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.                                  format: int32                                  type: integer                              required:                                - podAffinityTerm                                - weight                              type: object                            type: array                          requiredDuringSchedulingIgnoredDuringExecution:                            description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.                            items:                              description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running                              properties:                                labelSelector:                                  description: A label query over a set of resources, in this case pods.                                  properties:                                    matchExpressions:                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                      items:                                        description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                        properties:                                          key:                                            description: key is the label key that the selector applies to.                                            type: string                                          operator:                                            description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                            type: string                                          values:                                            description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                            items:                                              type: string                                            type: array                                        required:                                          - key                                          - operator                                        type: object                                      type: array                                    matchLabels:                                      additionalProperties:                                        type: string                                      description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                      type: object                                  type: object                                  x-kubernetes-map-type: atomic                                namespaceSelector:                                  description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                  properties:                                    matchExpressions:                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                      items:                                        description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                        properties:                                          key:                                            description: key is the label key that the selector applies to.                                            type: string                                          operator:                                            description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                            type: string                                          values:                                            description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                            items:                                              type: string                                            type: array                                        required:                                          - key                                          - operator                                        type: object                                      type: array                                    matchLabels:                                      additionalProperties:                                        type: string                                      description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                      type: object                                  type: object                                  x-kubernetes-map-type: atomic                                namespaces:                                  description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                  items:                                    type: string                                  type: array                                topologyKey:                                  description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                  type: string                              required:                                - topologyKey                              type: object                            type: array                        type: object                      tolerations:                        description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>                        items:                          description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.                          properties:                            effect:                              description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.                              type: string                            key:                              description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.                              type: string                            operator:                              description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.                              type: string                            tolerationSeconds:                              description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.                              format: int64                              type: integer                            value:                              description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.                              type: string                          type: object                        type: array                      topologySpreadConstraints:                        description: TopologySpreadConstraint specifies how to spread matching pods among the given topology                        items:                          description: TopologySpreadConstraint specifies how to spread matching pods among the given topology.                          properties:                            labelSelector:                              description: LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.                              properties:                                matchExpressions:                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                  items:                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                    properties:                                      key:                                        description: key is the label key that the selector applies to.                                        type: string                                      operator:                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                        type: string                                      values:                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                        items:                                          type: string                                        type: array                                    required:                                      - key                                      - operator                                    type: object                                  type: array                                matchLabels:                                  additionalProperties:                                    type: string                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                  type: object                              type: object                              x-kubernetes-map-type: atomic                            matchLabelKeys:                              description: "MatchLabelKeys is a set of pod label keys to select the pods over which spreading will be calculated. The keys are used to lookup values from the incoming pod labels, those key-value labels are ANDed with labelSelector to select the group of existing pods over which spreading will be calculated for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when LabelSelector isn't set. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector. \n This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default)."                              items:                                type: string                              type: array                              x-kubernetes-list-type: atomic                            maxSkew:                              description: 'MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | |  P P  |  P P  |   P   | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It''s a required field. Default value is 1 and 0 is not allowed.'                              format: int32                              type: integer                            minDomains:                              description: "MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats \"global minimum\" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule. \n For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | |  P P  |  P P  |  P P  | The number of domains is less than 5(MinDomains), so \"global minimum\" is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew. \n This is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default)."                              format: int32                              type: integer                            nodeAffinityPolicy:                              description: "NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. \n If this value is nil, the behavior is equivalent to the Honor policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag."                              type: string                            nodeTaintsPolicy:                              description: "NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included. \n If this value is nil, the behavior is equivalent to the Ignore policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag."                              type: string                            topologyKey:                              description: TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each <key, value> as a "bucket", and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes meet the requirements of nodeAffinityPolicy and nodeTaintsPolicy. e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology. And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology. It's a required field.                              type: string                            whenUnsatisfiable:                              description: 'WhenUnsatisfiable indicates how to deal with a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered "Unsatisfiable" for an incoming pod if and only if every possible node assignment for that pod would violate "MaxSkew" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P |   P   |   P   | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won''t make it *more* imbalanced. It''s a required field.'                              type: string                          required:                            - maxSkew                            - topologyKey                            - whenUnsatisfiable                          type: object                        type: array                    type: object                  description: The placement-related configuration to pass to kubernetes (affinity, node selector, tolerations).                  nullable: true                  type: object                  x-kubernetes-preserve-unknown-fields: true                priorityClassNames:                  additionalProperties:                    type: string                  description: PriorityClassNames sets priority classes on components                  nullable: true                  type: object                  x-kubernetes-preserve-unknown-fields: true                removeOSDsIfOutAndSafeToRemove:                  description: Remove the OSD that is out and safe to remove only if this option is true                  type: boolean                resources:                  additionalProperties:                    description: ResourceRequirements describes the compute resource requirements.                    properties:                      claims:                        description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers."                        items:                          description: ResourceClaim references one entry in PodSpec.ResourceClaims.                          properties:                            name:                              description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.                              type: string                          required:                            - name                          type: object                        type: array                        x-kubernetes-list-map-keys:                          - name                        x-kubernetes-list-type: map                      limits:                        additionalProperties:                          anyOf:                            - type: integer                            - type: string                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                          x-kubernetes-int-or-string: true                        description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                        type: object                      requests:                        additionalProperties:                          anyOf:                            - type: integer                            - type: string                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                          x-kubernetes-int-or-string: true                        description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                        type: object                    type: object                  description: Resources set resource requests and limits                  nullable: true                  type: object                  x-kubernetes-preserve-unknown-fields: true                security:                  description: Security represents security settings                  nullable: true                  properties:                    keyRotation:                      description: KeyRotation defines options for Key Rotation.                      nullable: true                      properties:                        enabled:                          default: false                          description: Enabled represents whether the key rotation is enabled.                          type: boolean                        schedule:                          description: Schedule represents the cron schedule for key rotation.                          type: string                      type: object                    kms:                      description: KeyManagementService is the main Key Management option                      nullable: true                      properties:                        connectionDetails:                          additionalProperties:                            type: string                          description: ConnectionDetails contains the KMS connection details (address, port etc)                          nullable: true                          type: object                          x-kubernetes-preserve-unknown-fields: true                        tokenSecretName:                          description: TokenSecretName is the kubernetes secret containing the KMS token                          type: string                      type: object                  type: object                skipUpgradeChecks:                  description: SkipUpgradeChecks defines if an upgrade should be forced even if one of the check fails                  type: boolean                storage:                  description: A spec for available storage in the cluster and how it should be used                  nullable: true                  properties:                    config:                      additionalProperties:                        type: string                      nullable: true                      type: object                      x-kubernetes-preserve-unknown-fields: true                    deviceFilter:                      description: A regular expression to allow more fine-grained selection of devices on nodes across the cluster                      type: string                    devicePathFilter:                      description: A regular expression to allow more fine-grained selection of devices with path names                      type: string                    devices:                      description: List of devices to use as storage devices                      items:                        description: Device represents a disk to use in the cluster                        properties:                          config:                            additionalProperties:                              type: string                            nullable: true                            type: object                            x-kubernetes-preserve-unknown-fields: true                          fullpath:                            type: string                          name:                            type: string                        type: object                      nullable: true                      type: array                      x-kubernetes-preserve-unknown-fields: true                    nodes:                      items:                        description: Node is a storage nodes                        properties:                          config:                            additionalProperties:                              type: string                            nullable: true                            type: object                            x-kubernetes-preserve-unknown-fields: true                          deviceFilter:                            description: A regular expression to allow more fine-grained selection of devices on nodes across the cluster                            type: string                          devicePathFilter:                            description: A regular expression to allow more fine-grained selection of devices with path names                            type: string                          devices:                            description: List of devices to use as storage devices                            items:                              description: Device represents a disk to use in the cluster                              properties:                                config:                                  additionalProperties:                                    type: string                                  nullable: true                                  type: object                                  x-kubernetes-preserve-unknown-fields: true                                fullpath:                                  type: string                                name:                                  type: string                              type: object                            nullable: true                            type: array                            x-kubernetes-preserve-unknown-fields: true                          name:                            type: string                          resources:                            description: ResourceRequirements describes the compute resource requirements.                            nullable: true                            properties:                              claims:                                description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers."                                items:                                  description: ResourceClaim references one entry in PodSpec.ResourceClaims.                                  properties:                                    name:                                      description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.                                      type: string                                  required:                                    - name                                  type: object                                type: array                                x-kubernetes-list-map-keys:                                  - name                                x-kubernetes-list-type: map                              limits:                                additionalProperties:                                  anyOf:                                    - type: integer                                    - type: string                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                  x-kubernetes-int-or-string: true                                description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                                type: object                              requests:                                additionalProperties:                                  anyOf:                                    - type: integer                                    - type: string                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                  x-kubernetes-int-or-string: true                                description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                                type: object                            type: object                            x-kubernetes-preserve-unknown-fields: true                          useAllDevices:                            description: Whether to consume all the storage devices found on a machine                            type: boolean                          volumeClaimTemplates:                            description: PersistentVolumeClaims to use as storage                            items:                              description: PersistentVolumeClaim is a user's request for and claim to a persistent volume                              properties:                                apiVersion:                                  description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'                                  type: string                                kind:                                  description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'                                  type: string                                metadata:                                  description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata'                                  properties:                                    annotations:                                      additionalProperties:                                        type: string                                      type: object                                    finalizers:                                      items:                                        type: string                                      type: array                                    labels:                                      additionalProperties:                                        type: string                                      type: object                                    name:                                      type: string                                    namespace:                                      type: string                                  type: object                                spec:                                  description: 'spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'                                  properties:                                    accessModes:                                      description: 'accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'                                      items:                                        type: string                                      type: array                                    dataSource:                                      description: 'dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.'                                      properties:                                        apiGroup:                                          description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.                                          type: string                                        kind:                                          description: Kind is the type of resource being referenced                                          type: string                                        name:                                          description: Name is the name of resource being referenced                                          type: string                                      required:                                        - kind                                        - name                                      type: object                                      x-kubernetes-map-type: atomic                                    dataSourceRef:                                      description: 'dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn''t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn''t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.'                                      properties:                                        apiGroup:                                          description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.                                          type: string                                        kind:                                          description: Kind is the type of resource being referenced                                          type: string                                        name:                                          description: Name is the name of resource being referenced                                          type: string                                        namespace:                                          description: Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.                                          type: string                                      required:                                        - kind                                        - name                                      type: object                                    resources:                                      description: 'resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'                                      properties:                                        claims:                                          description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers."                                          items:                                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.                                            properties:                                              name:                                                description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.                                                type: string                                            required:                                              - name                                            type: object                                          type: array                                          x-kubernetes-list-map-keys:                                            - name                                          x-kubernetes-list-type: map                                        limits:                                          additionalProperties:                                            anyOf:                                              - type: integer                                              - type: string                                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                            x-kubernetes-int-or-string: true                                          description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                                          type: object                                        requests:                                          additionalProperties:                                            anyOf:                                              - type: integer                                              - type: string                                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                            x-kubernetes-int-or-string: true                                          description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                                          type: object                                      type: object                                    selector:                                      description: selector is a label query over volumes to consider for binding.                                      properties:                                        matchExpressions:                                          description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                          items:                                            description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                            properties:                                              key:                                                description: key is the label key that the selector applies to.                                                type: string                                              operator:                                                description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                type: string                                              values:                                                description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                items:                                                  type: string                                                type: array                                            required:                                              - key                                              - operator                                            type: object                                          type: array                                        matchLabels:                                          additionalProperties:                                            type: string                                          description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                          type: object                                      type: object                                      x-kubernetes-map-type: atomic                                    storageClassName:                                      description: 'storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'                                      type: string                                    volumeMode:                                      description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.                                      type: string                                    volumeName:                                      description: volumeName is the binding reference to the PersistentVolume backing this claim.                                      type: string                                  type: object                                status:                                  description: 'status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'                                  properties:                                    accessModes:                                      description: 'accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'                                      items:                                        type: string                                      type: array                                    allocatedResourceStatuses:                                      additionalProperties:                                        description: When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource that it does not recognizes, then it should ignore that update and let other controllers handle it.                                        type: string                                      description: "allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \n ClaimResourceStatus can be in any of following states: - ControllerResizeInProgress: State set when resize controller starts resizing the volume in control-plane. - ControllerResizeFailed: State set when resize has failed in resize controller with a terminal error. - NodeResizePending: State set when resize controller has finished resizing the volume but further resizing of volume is needed on the node. - NodeResizeInProgress: State set when kubelet starts resizing the volume. - NodeResizeFailed: State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed. For example: if expanding a PVC for more capacity - this field can be one of the following states: - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeFailed\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizePending\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeFailed\" When this field is not set, it means that no resize operation is in progress for the given PVC. \n A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature."                                      type: object                                      x-kubernetes-map-type: granular                                    allocatedResources:                                      additionalProperties:                                        anyOf:                                          - type: integer                                          - type: string                                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                        x-kubernetes-int-or-string: true                                      description: "allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \n Capacity reported here may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. \n A controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature."                                      type: object                                    capacity:                                      additionalProperties:                                        anyOf:                                          - type: integer                                          - type: string                                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                        x-kubernetes-int-or-string: true                                      description: capacity represents the actual resources of the underlying volume.                                      type: object                                    conditions:                                      description: conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.                                      items:                                        description: PersistentVolumeClaimCondition contains details about state of pvc                                        properties:                                          lastProbeTime:                                            description: lastProbeTime is the time we probed the condition.                                            format: date-time                                            type: string                                          lastTransitionTime:                                            description: lastTransitionTime is the time the condition transitioned from one status to another.                                            format: date-time                                            type: string                                          message:                                            description: message is the human-readable message indicating details about last transition.                                            type: string                                          reason:                                            description: reason is a unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports "ResizeStarted" that means the underlying persistent volume is being resized.                                            type: string                                          status:                                            type: string                                          type:                                            description: PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type                                            type: string                                        required:                                          - status                                          - type                                        type: object                                      type: array                                    phase:                                      description: phase represents the current phase of PersistentVolumeClaim.                                      type: string                                  type: object                              type: object                            type: array                        type: object                      nullable: true                      type: array                    onlyApplyOSDPlacement:                      type: boolean                    storageClassDeviceSets:                      items:                        description: StorageClassDeviceSet is a storage class device set                        properties:                          config:                            additionalProperties:                              type: string                            description: Provider-specific device configuration                            nullable: true                            type: object                            x-kubernetes-preserve-unknown-fields: true                          count:                            description: Count is the number of devices in this set                            minimum: 1                            type: integer                          encrypted:                            description: Whether to encrypt the deviceSet                            type: boolean                          name:                            description: Name is a unique identifier for the set                            type: string                          placement:                            description: Placement is the placement for an object                            nullable: true                            properties:                              nodeAffinity:                                description: NodeAffinity is a group of node affinity scheduling rules                                properties:                                  preferredDuringSchedulingIgnoredDuringExecution:                                    description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.                                    items:                                      description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).                                      properties:                                        preference:                                          description: A node selector term, associated with the corresponding weight.                                          properties:                                            matchExpressions:                                              description: A list of node selector requirements by node's labels.                                              items:                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                                properties:                                                  key:                                                    description: The label key that the selector applies to.                                                    type: string                                                  operator:                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                                    type: string                                                  values:                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                                    items:                                                      type: string                                                    type: array                                                required:                                                  - key                                                  - operator                                                type: object                                              type: array                                            matchFields:                                              description: A list of node selector requirements by node's fields.                                              items:                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                                properties:                                                  key:                                                    description: The label key that the selector applies to.                                                    type: string                                                  operator:                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                                    type: string                                                  values:                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                                    items:                                                      type: string                                                    type: array                                                required:                                                  - key                                                  - operator                                                type: object                                              type: array                                          type: object                                          x-kubernetes-map-type: atomic                                        weight:                                          description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.                                          format: int32                                          type: integer                                      required:                                        - preference                                        - weight                                      type: object                                    type: array                                  requiredDuringSchedulingIgnoredDuringExecution:                                    description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.                                    properties:                                      nodeSelectorTerms:                                        description: Required. A list of node selector terms. The terms are ORed.                                        items:                                          description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.                                          properties:                                            matchExpressions:                                              description: A list of node selector requirements by node's labels.                                              items:                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                                properties:                                                  key:                                                    description: The label key that the selector applies to.                                                    type: string                                                  operator:                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                                    type: string                                                  values:                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                                    items:                                                      type: string                                                    type: array                                                required:                                                  - key                                                  - operator                                                type: object                                              type: array                                            matchFields:                                              description: A list of node selector requirements by node's fields.                                              items:                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                                properties:                                                  key:                                                    description: The label key that the selector applies to.                                                    type: string                                                  operator:                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                                    type: string                                                  values:                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                                    items:                                                      type: string                                                    type: array                                                required:                                                  - key                                                  - operator                                                type: object                                              type: array                                          type: object                                          x-kubernetes-map-type: atomic                                        type: array                                    required:                                      - nodeSelectorTerms                                    type: object                                    x-kubernetes-map-type: atomic                                type: object                              podAffinity:                                description: PodAffinity is a group of inter pod affinity scheduling rules                                properties:                                  preferredDuringSchedulingIgnoredDuringExecution:                                    description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.                                    items:                                      description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)                                      properties:                                        podAffinityTerm:                                          description: Required. A pod affinity term, associated with the corresponding weight.                                          properties:                                            labelSelector:                                              description: A label query over a set of resources, in this case pods.                                              properties:                                                matchExpressions:                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                                  items:                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                                    properties:                                                      key:                                                        description: key is the label key that the selector applies to.                                                        type: string                                                      operator:                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                        type: string                                                      values:                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                        items:                                                          type: string                                                        type: array                                                    required:                                                      - key                                                      - operator                                                    type: object                                                  type: array                                                matchLabels:                                                  additionalProperties:                                                    type: string                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                                  type: object                                              type: object                                              x-kubernetes-map-type: atomic                                            namespaceSelector:                                              description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                              properties:                                                matchExpressions:                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                                  items:                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                                    properties:                                                      key:                                                        description: key is the label key that the selector applies to.                                                        type: string                                                      operator:                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                        type: string                                                      values:                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                        items:                                                          type: string                                                        type: array                                                    required:                                                      - key                                                      - operator                                                    type: object                                                  type: array                                                matchLabels:                                                  additionalProperties:                                                    type: string                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                                  type: object                                              type: object                                              x-kubernetes-map-type: atomic                                            namespaces:                                              description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                              items:                                                type: string                                              type: array                                            topologyKey:                                              description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                              type: string                                          required:                                            - topologyKey                                          type: object                                        weight:                                          description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.                                          format: int32                                          type: integer                                      required:                                        - podAffinityTerm                                        - weight                                      type: object                                    type: array                                  requiredDuringSchedulingIgnoredDuringExecution:                                    description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.                                    items:                                      description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running                                      properties:                                        labelSelector:                                          description: A label query over a set of resources, in this case pods.                                          properties:                                            matchExpressions:                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                              items:                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                                properties:                                                  key:                                                    description: key is the label key that the selector applies to.                                                    type: string                                                  operator:                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                    type: string                                                  values:                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                    items:                                                      type: string                                                    type: array                                                required:                                                  - key                                                  - operator                                                type: object                                              type: array                                            matchLabels:                                              additionalProperties:                                                type: string                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                              type: object                                          type: object                                          x-kubernetes-map-type: atomic                                        namespaceSelector:                                          description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                          properties:                                            matchExpressions:                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                              items:                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                                properties:                                                  key:                                                    description: key is the label key that the selector applies to.                                                    type: string                                                  operator:                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                    type: string                                                  values:                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                    items:                                                      type: string                                                    type: array                                                required:                                                  - key                                                  - operator                                                type: object                                              type: array                                            matchLabels:                                              additionalProperties:                                                type: string                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                              type: object                                          type: object                                          x-kubernetes-map-type: atomic                                        namespaces:                                          description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                          items:                                            type: string                                          type: array                                        topologyKey:                                          description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                          type: string                                      required:                                        - topologyKey                                      type: object                                    type: array                                type: object                              podAntiAffinity:                                description: PodAntiAffinity is a group of inter pod anti affinity scheduling rules                                properties:                                  preferredDuringSchedulingIgnoredDuringExecution:                                    description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.                                    items:                                      description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)                                      properties:                                        podAffinityTerm:                                          description: Required. A pod affinity term, associated with the corresponding weight.                                          properties:                                            labelSelector:                                              description: A label query over a set of resources, in this case pods.                                              properties:                                                matchExpressions:                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                                  items:                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                                    properties:                                                      key:                                                        description: key is the label key that the selector applies to.                                                        type: string                                                      operator:                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                        type: string                                                      values:                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                        items:                                                          type: string                                                        type: array                                                    required:                                                      - key                                                      - operator                                                    type: object                                                  type: array                                                matchLabels:                                                  additionalProperties:                                                    type: string                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                                  type: object                                              type: object                                              x-kubernetes-map-type: atomic                                            namespaceSelector:                                              description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                              properties:                                                matchExpressions:                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                                  items:                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                                    properties:                                                      key:                                                        description: key is the label key that the selector applies to.                                                        type: string                                                      operator:                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                        type: string                                                      values:                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                        items:                                                          type: string                                                        type: array                                                    required:                                                      - key                                                      - operator                                                    type: object                                                  type: array                                                matchLabels:                                                  additionalProperties:                                                    type: string                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                                  type: object                                              type: object                                              x-kubernetes-map-type: atomic                                            namespaces:                                              description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                              items:                                                type: string                                              type: array                                            topologyKey:                                              description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                              type: string                                          required:                                            - topologyKey                                          type: object                                        weight:                                          description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.                                          format: int32                                          type: integer                                      required:                                        - podAffinityTerm                                        - weight                                      type: object                                    type: array                                  requiredDuringSchedulingIgnoredDuringExecution:                                    description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.                                    items:                                      description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running                                      properties:                                        labelSelector:                                          description: A label query over a set of resources, in this case pods.                                          properties:                                            matchExpressions:                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                              items:                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                                properties:                                                  key:                                                    description: key is the label key that the selector applies to.                                                    type: string                                                  operator:                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                    type: string                                                  values:                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                    items:                                                      type: string                                                    type: array                                                required:                                                  - key                                                  - operator                                                type: object                                              type: array                                            matchLabels:                                              additionalProperties:                                                type: string                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                              type: object                                          type: object                                          x-kubernetes-map-type: atomic                                        namespaceSelector:                                          description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                          properties:                                            matchExpressions:                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                              items:                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                                properties:                                                  key:                                                    description: key is the label key that the selector applies to.                                                    type: string                                                  operator:                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                    type: string                                                  values:                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                    items:                                                      type: string                                                    type: array                                                required:                                                  - key                                                  - operator                                                type: object                                              type: array                                            matchLabels:                                              additionalProperties:                                                type: string                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                              type: object                                          type: object                                          x-kubernetes-map-type: atomic                                        namespaces:                                          description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                          items:                                            type: string                                          type: array                                        topologyKey:                                          description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                          type: string                                      required:                                        - topologyKey                                      type: object                                    type: array                                type: object                              tolerations:                                description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>                                items:                                  description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.                                  properties:                                    effect:                                      description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.                                      type: string                                    key:                                      description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.                                      type: string                                    operator:                                      description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.                                      type: string                                    tolerationSeconds:                                      description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.                                      format: int64                                      type: integer                                    value:                                      description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.                                      type: string                                  type: object                                type: array                              topologySpreadConstraints:                                description: TopologySpreadConstraint specifies how to spread matching pods among the given topology                                items:                                  description: TopologySpreadConstraint specifies how to spread matching pods among the given topology.                                  properties:                                    labelSelector:                                      description: LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.                                      properties:                                        matchExpressions:                                          description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                          items:                                            description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                            properties:                                              key:                                                description: key is the label key that the selector applies to.                                                type: string                                              operator:                                                description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                type: string                                              values:                                                description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                items:                                                  type: string                                                type: array                                            required:                                              - key                                              - operator                                            type: object                                          type: array                                        matchLabels:                                          additionalProperties:                                            type: string                                          description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                          type: object                                      type: object                                      x-kubernetes-map-type: atomic                                    matchLabelKeys:                                      description: "MatchLabelKeys is a set of pod label keys to select the pods over which spreading will be calculated. The keys are used to lookup values from the incoming pod labels, those key-value labels are ANDed with labelSelector to select the group of existing pods over which spreading will be calculated for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when LabelSelector isn't set. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector. \n This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default)."                                      items:                                        type: string                                      type: array                                      x-kubernetes-list-type: atomic                                    maxSkew:                                      description: 'MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | |  P P  |  P P  |   P   | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It''s a required field. Default value is 1 and 0 is not allowed.'                                      format: int32                                      type: integer                                    minDomains:                                      description: "MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats \"global minimum\" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule. \n For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | |  P P  |  P P  |  P P  | The number of domains is less than 5(MinDomains), so \"global minimum\" is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew. \n This is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default)."                                      format: int32                                      type: integer                                    nodeAffinityPolicy:                                      description: "NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. \n If this value is nil, the behavior is equivalent to the Honor policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag."                                      type: string                                    nodeTaintsPolicy:                                      description: "NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included. \n If this value is nil, the behavior is equivalent to the Ignore policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag."                                      type: string                                    topologyKey:                                      description: TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each <key, value> as a "bucket", and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes meet the requirements of nodeAffinityPolicy and nodeTaintsPolicy. e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology. And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology. It's a required field.                                      type: string                                    whenUnsatisfiable:                                      description: 'WhenUnsatisfiable indicates how to deal with a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered "Unsatisfiable" for an incoming pod if and only if every possible node assignment for that pod would violate "MaxSkew" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P |   P   |   P   | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won''t make it *more* imbalanced. It''s a required field.'                                      type: string                                  required:                                    - maxSkew                                    - topologyKey                                    - whenUnsatisfiable                                  type: object                                type: array                            type: object                            x-kubernetes-preserve-unknown-fields: true                          portable:                            description: Portable represents OSD portability across the hosts                            type: boolean                          preparePlacement:                            description: Placement is the placement for an object                            nullable: true                            properties:                              nodeAffinity:                                description: NodeAffinity is a group of node affinity scheduling rules                                properties:                                  preferredDuringSchedulingIgnoredDuringExecution:                                    description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.                                    items:                                      description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).                                      properties:                                        preference:                                          description: A node selector term, associated with the corresponding weight.                                          properties:                                            matchExpressions:                                              description: A list of node selector requirements by node's labels.                                              items:                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                                properties:                                                  key:                                                    description: The label key that the selector applies to.                                                    type: string                                                  operator:                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                                    type: string                                                  values:                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                                    items:                                                      type: string                                                    type: array                                                required:                                                  - key                                                  - operator                                                type: object                                              type: array                                            matchFields:                                              description: A list of node selector requirements by node's fields.                                              items:                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                                properties:                                                  key:                                                    description: The label key that the selector applies to.                                                    type: string                                                  operator:                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                                    type: string                                                  values:                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                                    items:                                                      type: string                                                    type: array                                                required:                                                  - key                                                  - operator                                                type: object                                              type: array                                          type: object                                          x-kubernetes-map-type: atomic                                        weight:                                          description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.                                          format: int32                                          type: integer                                      required:                                        - preference                                        - weight                                      type: object                                    type: array                                  requiredDuringSchedulingIgnoredDuringExecution:                                    description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.                                    properties:                                      nodeSelectorTerms:                                        description: Required. A list of node selector terms. The terms are ORed.                                        items:                                          description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.                                          properties:                                            matchExpressions:                                              description: A list of node selector requirements by node's labels.                                              items:                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                                properties:                                                  key:                                                    description: The label key that the selector applies to.                                                    type: string                                                  operator:                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                                    type: string                                                  values:                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                                    items:                                                      type: string                                                    type: array                                                required:                                                  - key                                                  - operator                                                type: object                                              type: array                                            matchFields:                                              description: A list of node selector requirements by node's fields.                                              items:                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                                properties:                                                  key:                                                    description: The label key that the selector applies to.                                                    type: string                                                  operator:                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                                    type: string                                                  values:                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                                    items:                                                      type: string                                                    type: array                                                required:                                                  - key                                                  - operator                                                type: object                                              type: array                                          type: object                                          x-kubernetes-map-type: atomic                                        type: array                                    required:                                      - nodeSelectorTerms                                    type: object                                    x-kubernetes-map-type: atomic                                type: object                              podAffinity:                                description: PodAffinity is a group of inter pod affinity scheduling rules                                properties:                                  preferredDuringSchedulingIgnoredDuringExecution:                                    description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.                                    items:                                      description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)                                      properties:                                        podAffinityTerm:                                          description: Required. A pod affinity term, associated with the corresponding weight.                                          properties:                                            labelSelector:                                              description: A label query over a set of resources, in this case pods.                                              properties:                                                matchExpressions:                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                                  items:                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                                    properties:                                                      key:                                                        description: key is the label key that the selector applies to.                                                        type: string                                                      operator:                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                        type: string                                                      values:                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                        items:                                                          type: string                                                        type: array                                                    required:                                                      - key                                                      - operator                                                    type: object                                                  type: array                                                matchLabels:                                                  additionalProperties:                                                    type: string                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                                  type: object                                              type: object                                              x-kubernetes-map-type: atomic                                            namespaceSelector:                                              description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                              properties:                                                matchExpressions:                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                                  items:                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                                    properties:                                                      key:                                                        description: key is the label key that the selector applies to.                                                        type: string                                                      operator:                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                        type: string                                                      values:                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                        items:                                                          type: string                                                        type: array                                                    required:                                                      - key                                                      - operator                                                    type: object                                                  type: array                                                matchLabels:                                                  additionalProperties:                                                    type: string                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                                  type: object                                              type: object                                              x-kubernetes-map-type: atomic                                            namespaces:                                              description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                              items:                                                type: string                                              type: array                                            topologyKey:                                              description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                              type: string                                          required:                                            - topologyKey                                          type: object                                        weight:                                          description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.                                          format: int32                                          type: integer                                      required:                                        - podAffinityTerm                                        - weight                                      type: object                                    type: array                                  requiredDuringSchedulingIgnoredDuringExecution:                                    description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.                                    items:                                      description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running                                      properties:                                        labelSelector:                                          description: A label query over a set of resources, in this case pods.                                          properties:                                            matchExpressions:                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                              items:                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                                properties:                                                  key:                                                    description: key is the label key that the selector applies to.                                                    type: string                                                  operator:                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                    type: string                                                  values:                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                    items:                                                      type: string                                                    type: array                                                required:                                                  - key                                                  - operator                                                type: object                                              type: array                                            matchLabels:                                              additionalProperties:                                                type: string                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                              type: object                                          type: object                                          x-kubernetes-map-type: atomic                                        namespaceSelector:                                          description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                          properties:                                            matchExpressions:                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                              items:                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                                properties:                                                  key:                                                    description: key is the label key that the selector applies to.                                                    type: string                                                  operator:                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                    type: string                                                  values:                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                    items:                                                      type: string                                                    type: array                                                required:                                                  - key                                                  - operator                                                type: object                                              type: array                                            matchLabels:                                              additionalProperties:                                                type: string                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                              type: object                                          type: object                                          x-kubernetes-map-type: atomic                                        namespaces:                                          description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                          items:                                            type: string                                          type: array                                        topologyKey:                                          description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                          type: string                                      required:                                        - topologyKey                                      type: object                                    type: array                                type: object                              podAntiAffinity:                                description: PodAntiAffinity is a group of inter pod anti affinity scheduling rules                                properties:                                  preferredDuringSchedulingIgnoredDuringExecution:                                    description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.                                    items:                                      description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)                                      properties:                                        podAffinityTerm:                                          description: Required. A pod affinity term, associated with the corresponding weight.                                          properties:                                            labelSelector:                                              description: A label query over a set of resources, in this case pods.                                              properties:                                                matchExpressions:                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                                  items:                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                                    properties:                                                      key:                                                        description: key is the label key that the selector applies to.                                                        type: string                                                      operator:                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                        type: string                                                      values:                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                        items:                                                          type: string                                                        type: array                                                    required:                                                      - key                                                      - operator                                                    type: object                                                  type: array                                                matchLabels:                                                  additionalProperties:                                                    type: string                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                                  type: object                                              type: object                                              x-kubernetes-map-type: atomic                                            namespaceSelector:                                              description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                              properties:                                                matchExpressions:                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                                  items:                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                                    properties:                                                      key:                                                        description: key is the label key that the selector applies to.                                                        type: string                                                      operator:                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                        type: string                                                      values:                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                        items:                                                          type: string                                                        type: array                                                    required:                                                      - key                                                      - operator                                                    type: object                                                  type: array                                                matchLabels:                                                  additionalProperties:                                                    type: string                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                                  type: object                                              type: object                                              x-kubernetes-map-type: atomic                                            namespaces:                                              description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                              items:                                                type: string                                              type: array                                            topologyKey:                                              description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                              type: string                                          required:                                            - topologyKey                                          type: object                                        weight:                                          description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.                                          format: int32                                          type: integer                                      required:                                        - podAffinityTerm                                        - weight                                      type: object                                    type: array                                  requiredDuringSchedulingIgnoredDuringExecution:                                    description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.                                    items:                                      description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running                                      properties:                                        labelSelector:                                          description: A label query over a set of resources, in this case pods.                                          properties:                                            matchExpressions:                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                              items:                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                                properties:                                                  key:                                                    description: key is the label key that the selector applies to.                                                    type: string                                                  operator:                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                    type: string                                                  values:                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                    items:                                                      type: string                                                    type: array                                                required:                                                  - key                                                  - operator                                                type: object                                              type: array                                            matchLabels:                                              additionalProperties:                                                type: string                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                              type: object                                          type: object                                          x-kubernetes-map-type: atomic                                        namespaceSelector:                                          description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                          properties:                                            matchExpressions:                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                              items:                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                                properties:                                                  key:                                                    description: key is the label key that the selector applies to.                                                    type: string                                                  operator:                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                    type: string                                                  values:                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                    items:                                                      type: string                                                    type: array                                                required:                                                  - key                                                  - operator                                                type: object                                              type: array                                            matchLabels:                                              additionalProperties:                                                type: string                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                              type: object                                          type: object                                          x-kubernetes-map-type: atomic                                        namespaces:                                          description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                          items:                                            type: string                                          type: array                                        topologyKey:                                          description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                          type: string                                      required:                                        - topologyKey                                      type: object                                    type: array                                type: object                              tolerations:                                description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>                                items:                                  description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.                                  properties:                                    effect:                                      description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.                                      type: string                                    key:                                      description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.                                      type: string                                    operator:                                      description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.                                      type: string                                    tolerationSeconds:                                      description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.                                      format: int64                                      type: integer                                    value:                                      description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.                                      type: string                                  type: object                                type: array                              topologySpreadConstraints:                                description: TopologySpreadConstraint specifies how to spread matching pods among the given topology                                items:                                  description: TopologySpreadConstraint specifies how to spread matching pods among the given topology.                                  properties:                                    labelSelector:                                      description: LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.                                      properties:                                        matchExpressions:                                          description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                          items:                                            description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                            properties:                                              key:                                                description: key is the label key that the selector applies to.                                                type: string                                              operator:                                                description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                type: string                                              values:                                                description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                items:                                                  type: string                                                type: array                                            required:                                              - key                                              - operator                                            type: object                                          type: array                                        matchLabels:                                          additionalProperties:                                            type: string                                          description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                          type: object                                      type: object                                      x-kubernetes-map-type: atomic                                    matchLabelKeys:                                      description: "MatchLabelKeys is a set of pod label keys to select the pods over which spreading will be calculated. The keys are used to lookup values from the incoming pod labels, those key-value labels are ANDed with labelSelector to select the group of existing pods over which spreading will be calculated for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when LabelSelector isn't set. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector. \n This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default)."                                      items:                                        type: string                                      type: array                                      x-kubernetes-list-type: atomic                                    maxSkew:                                      description: 'MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | |  P P  |  P P  |   P   | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It''s a required field. Default value is 1 and 0 is not allowed.'                                      format: int32                                      type: integer                                    minDomains:                                      description: "MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats \"global minimum\" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule. \n For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | |  P P  |  P P  |  P P  | The number of domains is less than 5(MinDomains), so \"global minimum\" is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew. \n This is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default)."                                      format: int32                                      type: integer                                    nodeAffinityPolicy:                                      description: "NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. \n If this value is nil, the behavior is equivalent to the Honor policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag."                                      type: string                                    nodeTaintsPolicy:                                      description: "NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included. \n If this value is nil, the behavior is equivalent to the Ignore policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag."                                      type: string                                    topologyKey:                                      description: TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each <key, value> as a "bucket", and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes meet the requirements of nodeAffinityPolicy and nodeTaintsPolicy. e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology. And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology. It's a required field.                                      type: string                                    whenUnsatisfiable:                                      description: 'WhenUnsatisfiable indicates how to deal with a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered "Unsatisfiable" for an incoming pod if and only if every possible node assignment for that pod would violate "MaxSkew" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P |   P   |   P   | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won''t make it *more* imbalanced. It''s a required field.'                                      type: string                                  required:                                    - maxSkew                                    - topologyKey                                    - whenUnsatisfiable                                  type: object                                type: array                            type: object                            x-kubernetes-preserve-unknown-fields: true                          resources:                            description: ResourceRequirements describes the compute resource requirements.                            nullable: true                            properties:                              claims:                                description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers."                                items:                                  description: ResourceClaim references one entry in PodSpec.ResourceClaims.                                  properties:                                    name:                                      description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.                                      type: string                                  required:                                    - name                                  type: object                                type: array                                x-kubernetes-list-map-keys:                                  - name                                x-kubernetes-list-type: map                              limits:                                additionalProperties:                                  anyOf:                                    - type: integer                                    - type: string                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                  x-kubernetes-int-or-string: true                                description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                                type: object                              requests:                                additionalProperties:                                  anyOf:                                    - type: integer                                    - type: string                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                  x-kubernetes-int-or-string: true                                description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                                type: object                            type: object                            x-kubernetes-preserve-unknown-fields: true                          schedulerName:                            description: Scheduler name for OSD pod placement                            type: string                          tuneDeviceClass:                            description: TuneSlowDeviceClass Tune the OSD when running on a slow Device Class                            type: boolean                          tuneFastDeviceClass:                            description: TuneFastDeviceClass Tune the OSD when running on a fast Device Class                            type: boolean                          volumeClaimTemplates:                            description: VolumeClaimTemplates is a list of PVC templates for the underlying storage devices                            items:                              description: PersistentVolumeClaim is a user's request for and claim to a persistent volume                              properties:                                apiVersion:                                  description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'                                  type: string                                kind:                                  description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'                                  type: string                                metadata:                                  description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata'                                  properties:                                    annotations:                                      additionalProperties:                                        type: string                                      type: object                                      x-kubernetes-preserve-unknown-fields: true                                    finalizers:                                      items:                                        type: string                                      type: array                                    labels:                                      additionalProperties:                                        type: string                                      type: object                                    name:                                      type: string                                    namespace:                                      type: string                                  type: object                                spec:                                  description: 'spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'                                  properties:                                    accessModes:                                      description: 'accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'                                      items:                                        type: string                                      type: array                                    dataSource:                                      description: 'dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.'                                      properties:                                        apiGroup:                                          description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.                                          type: string                                        kind:                                          description: Kind is the type of resource being referenced                                          type: string                                        name:                                          description: Name is the name of resource being referenced                                          type: string                                      required:                                        - kind                                        - name                                      type: object                                      x-kubernetes-map-type: atomic                                    dataSourceRef:                                      description: 'dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn''t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn''t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.'                                      properties:                                        apiGroup:                                          description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.                                          type: string                                        kind:                                          description: Kind is the type of resource being referenced                                          type: string                                        name:                                          description: Name is the name of resource being referenced                                          type: string                                        namespace:                                          description: Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.                                          type: string                                      required:                                        - kind                                        - name                                      type: object                                    resources:                                      description: 'resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'                                      properties:                                        claims:                                          description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers."                                          items:                                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.                                            properties:                                              name:                                                description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.                                                type: string                                            required:                                              - name                                            type: object                                          type: array                                          x-kubernetes-list-map-keys:                                            - name                                          x-kubernetes-list-type: map                                        limits:                                          additionalProperties:                                            anyOf:                                              - type: integer                                              - type: string                                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                            x-kubernetes-int-or-string: true                                          description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                                          type: object                                        requests:                                          additionalProperties:                                            anyOf:                                              - type: integer                                              - type: string                                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                            x-kubernetes-int-or-string: true                                          description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                                          type: object                                      type: object                                    selector:                                      description: selector is a label query over volumes to consider for binding.                                      properties:                                        matchExpressions:                                          description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                          items:                                            description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                            properties:                                              key:                                                description: key is the label key that the selector applies to.                                                type: string                                              operator:                                                description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                type: string                                              values:                                                description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                items:                                                  type: string                                                type: array                                            required:                                              - key                                              - operator                                            type: object                                          type: array                                        matchLabels:                                          additionalProperties:                                            type: string                                          description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                          type: object                                      type: object                                      x-kubernetes-map-type: atomic                                    storageClassName:                                      description: 'storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'                                      type: string                                    volumeMode:                                      description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.                                      type: string                                    volumeName:                                      description: volumeName is the binding reference to the PersistentVolume backing this claim.                                      type: string                                  type: object                                status:                                  description: 'status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'                                  properties:                                    accessModes:                                      description: 'accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'                                      items:                                        type: string                                      type: array                                    allocatedResourceStatuses:                                      additionalProperties:                                        description: When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource that it does not recognizes, then it should ignore that update and let other controllers handle it.                                        type: string                                      description: "allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \n ClaimResourceStatus can be in any of following states: - ControllerResizeInProgress: State set when resize controller starts resizing the volume in control-plane. - ControllerResizeFailed: State set when resize has failed in resize controller with a terminal error. - NodeResizePending: State set when resize controller has finished resizing the volume but further resizing of volume is needed on the node. - NodeResizeInProgress: State set when kubelet starts resizing the volume. - NodeResizeFailed: State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed. For example: if expanding a PVC for more capacity - this field can be one of the following states: - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeFailed\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizePending\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeFailed\" When this field is not set, it means that no resize operation is in progress for the given PVC. \n A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature."                                      type: object                                      x-kubernetes-map-type: granular                                    allocatedResources:                                      additionalProperties:                                        anyOf:                                          - type: integer                                          - type: string                                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                        x-kubernetes-int-or-string: true                                      description: "allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \n Capacity reported here may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. \n A controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature."                                      type: object                                    capacity:                                      additionalProperties:                                        anyOf:                                          - type: integer                                          - type: string                                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                        x-kubernetes-int-or-string: true                                      description: capacity represents the actual resources of the underlying volume.                                      type: object                                    conditions:                                      description: conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.                                      items:                                        description: PersistentVolumeClaimCondition contains details about state of pvc                                        properties:                                          lastProbeTime:                                            description: lastProbeTime is the time we probed the condition.                                            format: date-time                                            type: string                                          lastTransitionTime:                                            description: lastTransitionTime is the time the condition transitioned from one status to another.                                            format: date-time                                            type: string                                          message:                                            description: message is the human-readable message indicating details about last transition.                                            type: string                                          reason:                                            description: reason is a unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports "ResizeStarted" that means the underlying persistent volume is being resized.                                            type: string                                          status:                                            type: string                                          type:                                            description: PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type                                            type: string                                        required:                                          - status                                          - type                                        type: object                                      type: array                                    phase:                                      description: phase represents the current phase of PersistentVolumeClaim.                                      type: string                                  type: object                              type: object                            type: array                        required:                          - count                          - name                          - volumeClaimTemplates                        type: object                      nullable: true                      type: array                    store:                      description: OSDStore is the backend storage type used for creating the OSDs                      properties:                        type:                          description: Type of backend storage to be used while creating OSDs. If empty, then bluestore will be used                          enum:                            - bluestore                            - bluestore-rdr                          type: string                        updateStore:                          description: UpdateStore updates the backend store for existing OSDs. It destroys each OSD one at a time, cleans up the backing disk and prepares same OSD on that disk                          pattern: ^$|^yes-really-update-store$                          type: string                      type: object                    useAllDevices:                      description: Whether to consume all the storage devices found on a machine                      type: boolean                    useAllNodes:                      type: boolean                    volumeClaimTemplates:                      description: PersistentVolumeClaims to use as storage                      items:                        description: PersistentVolumeClaim is a user's request for and claim to a persistent volume                        properties:                          apiVersion:                            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'                            type: string                          kind:                            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'                            type: string                          metadata:                            description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata'                            properties:                              annotations:                                additionalProperties:                                  type: string                                type: object                              finalizers:                                items:                                  type: string                                type: array                              labels:                                additionalProperties:                                  type: string                                type: object                              name:                                type: string                              namespace:                                type: string                            type: object                          spec:                            description: 'spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'                            properties:                              accessModes:                                description: 'accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'                                items:                                  type: string                                type: array                              dataSource:                                description: 'dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.'                                properties:                                  apiGroup:                                    description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.                                    type: string                                  kind:                                    description: Kind is the type of resource being referenced                                    type: string                                  name:                                    description: Name is the name of resource being referenced                                    type: string                                required:                                  - kind                                  - name                                type: object                                x-kubernetes-map-type: atomic                              dataSourceRef:                                description: 'dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn''t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn''t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.'                                properties:                                  apiGroup:                                    description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.                                    type: string                                  kind:                                    description: Kind is the type of resource being referenced                                    type: string                                  name:                                    description: Name is the name of resource being referenced                                    type: string                                  namespace:                                    description: Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.                                    type: string                                required:                                  - kind                                  - name                                type: object                              resources:                                description: 'resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'                                properties:                                  claims:                                    description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers."                                    items:                                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.                                      properties:                                        name:                                          description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.                                          type: string                                      required:                                        - name                                      type: object                                    type: array                                    x-kubernetes-list-map-keys:                                      - name                                    x-kubernetes-list-type: map                                  limits:                                    additionalProperties:                                      anyOf:                                        - type: integer                                        - type: string                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                      x-kubernetes-int-or-string: true                                    description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                                    type: object                                  requests:                                    additionalProperties:                                      anyOf:                                        - type: integer                                        - type: string                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                      x-kubernetes-int-or-string: true                                    description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                                    type: object                                type: object                              selector:                                description: selector is a label query over volumes to consider for binding.                                properties:                                  matchExpressions:                                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                    items:                                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: key is the label key that the selector applies to.                                          type: string                                        operator:                                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                          type: string                                        values:                                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                  matchLabels:                                    additionalProperties:                                      type: string                                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                    type: object                                type: object                                x-kubernetes-map-type: atomic                              storageClassName:                                description: 'storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'                                type: string                              volumeMode:                                description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.                                type: string                              volumeName:                                description: volumeName is the binding reference to the PersistentVolume backing this claim.                                type: string                            type: object                          status:                            description: 'status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'                            properties:                              accessModes:                                description: 'accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'                                items:                                  type: string                                type: array                              allocatedResourceStatuses:                                additionalProperties:                                  description: When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource that it does not recognizes, then it should ignore that update and let other controllers handle it.                                  type: string                                description: "allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \n ClaimResourceStatus can be in any of following states: - ControllerResizeInProgress: State set when resize controller starts resizing the volume in control-plane. - ControllerResizeFailed: State set when resize has failed in resize controller with a terminal error. - NodeResizePending: State set when resize controller has finished resizing the volume but further resizing of volume is needed on the node. - NodeResizeInProgress: State set when kubelet starts resizing the volume. - NodeResizeFailed: State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed. For example: if expanding a PVC for more capacity - this field can be one of the following states: - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeFailed\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizePending\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeInProgress\" - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeFailed\" When this field is not set, it means that no resize operation is in progress for the given PVC. \n A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature."                                type: object                                x-kubernetes-map-type: granular                              allocatedResources:                                additionalProperties:                                  anyOf:                                    - type: integer                                    - type: string                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                  x-kubernetes-int-or-string: true                                description: "allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either: * Un-prefixed keys: - storage - the capacity of the volume. * Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\" Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used. \n Capacity reported here may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. \n A controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC. \n This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature."                                type: object                              capacity:                                additionalProperties:                                  anyOf:                                    - type: integer                                    - type: string                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                  x-kubernetes-int-or-string: true                                description: capacity represents the actual resources of the underlying volume.                                type: object                              conditions:                                description: conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.                                items:                                  description: PersistentVolumeClaimCondition contains details about state of pvc                                  properties:                                    lastProbeTime:                                      description: lastProbeTime is the time we probed the condition.                                      format: date-time                                      type: string                                    lastTransitionTime:                                      description: lastTransitionTime is the time the condition transitioned from one status to another.                                      format: date-time                                      type: string                                    message:                                      description: message is the human-readable message indicating details about last transition.                                      type: string                                    reason:                                      description: reason is a unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports "ResizeStarted" that means the underlying persistent volume is being resized.                                      type: string                                    status:                                      type: string                                    type:                                      description: PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type                                      type: string                                  required:                                    - status                                    - type                                  type: object                                type: array                              phase:                                description: phase represents the current phase of PersistentVolumeClaim.                                type: string                            type: object                        type: object                      type: array                  type: object                waitTimeoutForHealthyOSDInMinutes:                  description: WaitTimeoutForHealthyOSDInMinutes defines the time the operator would wait before an OSD can be stopped for upgrade or restart. If the timeout exceeds and OSD is not ok to stop, then the operator would skip upgrade for the current OSD and proceed with the next one if `continueUpgradeAfterChecksEvenIfNotHealthy` is `false`. If `continueUpgradeAfterChecksEvenIfNotHealthy` is `true`, then operator would continue with the upgrade of an OSD even if its not ok to stop after the timeout. This timeout won't be applied if `skipUpgradeChecks` is `true`. The default wait timeout is 10 minutes.                  format: int64                  type: integer              type: object            status:              description: ClusterStatus represents the status of a Ceph cluster              nullable: true              properties:                ceph:                  description: CephStatus is the details health of a Ceph Cluster                  properties:                    capacity:                      description: Capacity is the capacity information of a Ceph Cluster                      properties:                        bytesAvailable:                          format: int64                          type: integer                        bytesTotal:                          format: int64                          type: integer                        bytesUsed:                          format: int64                          type: integer                        lastUpdated:                          type: string                      type: object                    details:                      additionalProperties:                        description: CephHealthMessage represents the health message of a Ceph Cluster                        properties:                          message:                            type: string                          severity:                            type: string                        required:                          - message                          - severity                        type: object                      type: object                    fsid:                      type: string                    health:                      type: string                    lastChanged:                      type: string                    lastChecked:                      type: string                    previousHealth:                      type: string                    versions:                      description: CephDaemonsVersions show the current ceph version for different ceph daemons                      properties:                        cephfs-mirror:                          additionalProperties:                            type: integer                          description: CephFSMirror shows CephFSMirror Ceph version                          type: object                        mds:                          additionalProperties:                            type: integer                          description: Mds shows Mds Ceph version                          type: object                        mgr:                          additionalProperties:                            type: integer                          description: Mgr shows Mgr Ceph version                          type: object                        mon:                          additionalProperties:                            type: integer                          description: Mon shows Mon Ceph version                          type: object                        osd:                          additionalProperties:                            type: integer                          description: Osd shows Osd Ceph version                          type: object                        overall:                          additionalProperties:                            type: integer                          description: Overall shows overall Ceph version                          type: object                        rbd-mirror:                          additionalProperties:                            type: integer                          description: RbdMirror shows RbdMirror Ceph version                          type: object                        rgw:                          additionalProperties:                            type: integer                          description: Rgw shows Rgw Ceph version                          type: object                      type: object                  type: object                conditions:                  items:                    description: Condition represents a status condition on any Rook-Ceph Custom Resource.                    properties:                      lastHeartbeatTime:                        format: date-time                        type: string                      lastTransitionTime:                        format: date-time                        type: string                      message:                        type: string                      reason:                        description: ConditionReason is a reason for a condition                        type: string                      status:                        type: string                      type:                        description: ConditionType represent a resource's status                        type: string                    type: object                  type: array                message:                  type: string                observedGeneration:                  description: ObservedGeneration is the latest generation observed by the controller.                  format: int64                  type: integer                phase:                  description: ConditionType represent a resource's status                  type: string                state:                  description: ClusterState represents the state of a Ceph Cluster                  type: string                storage:                  description: CephStorage represents flavors of Ceph Cluster Storage                  properties:                    deviceClasses:                      items:                        description: DeviceClasses represents device classes of a Ceph Cluster                        properties:                          name:                            type: string                        type: object                      type: array                    osd:                      description: OSDStatus represents OSD status of the ceph Cluster                      properties:                        storeType:                          additionalProperties:                            type: integer                          description: StoreType is a mapping between the OSD backend stores and number of OSDs using these stores                          type: object                      type: object                  type: object                version:                  description: ClusterVersion represents the version of a Ceph Cluster                  properties:                    image:                      type: string                    version:                      type: string                  type: object              type: object              x-kubernetes-preserve-unknown-fields: true          required:            - metadata            - spec          type: object      served: true      storage: true      subresources:        status: {}---# Source: rook-ceph/templates/resources.yamlapiVersion: apiextensions.k8s.io/v1kind: CustomResourceDefinitionmetadata:  annotations:    controller-gen.kubebuilder.io/version: v0.11.3    helm.sh/resource-policy: keep  creationTimestamp: null  name: cephcosidrivers.ceph.rook.iospec:  group: ceph.rook.io  names:    kind: CephCOSIDriver    listKind: CephCOSIDriverList    plural: cephcosidrivers    shortNames:      - cephcosi    singular: cephcosidriver  scope: Namespaced  versions:    - name: v1      schema:        openAPIV3Schema:          description: CephCOSIDriver represents the CRD for the Ceph COSI Driver Deployment          properties:            apiVersion:              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'              type: string            kind:              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'              type: string            metadata:              type: object            spec:              description: Spec represents the specification of a Ceph COSI Driver              properties:                deploymentStrategy:                  description: DeploymentStrategy is the strategy to use to deploy the COSI driver.                  enum:                    - Never                    - Auto                    - Always                  type: string                image:                  description: Image is the container image to run the Ceph COSI driver                  type: string                objectProvisionerImage:                  description: ObjectProvisionerImage is the container image to run the COSI driver sidecar                  type: string                placement:                  description: Placement is the placement strategy to use for the COSI driver                  properties:                    nodeAffinity:                      description: NodeAffinity is a group of node affinity scheduling rules                      properties:                        preferredDuringSchedulingIgnoredDuringExecution:                          description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.                          items:                            description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).                            properties:                              preference:                                description: A node selector term, associated with the corresponding weight.                                properties:                                  matchExpressions:                                    description: A list of node selector requirements by node's labels.                                    items:                                      description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: The label key that the selector applies to.                                          type: string                                        operator:                                          description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                          type: string                                        values:                                          description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                  matchFields:                                    description: A list of node selector requirements by node's fields.                                    items:                                      description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: The label key that the selector applies to.                                          type: string                                        operator:                                          description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                          type: string                                        values:                                          description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                type: object                                x-kubernetes-map-type: atomic                              weight:                                description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.                                format: int32                                type: integer                            required:                              - preference                              - weight                            type: object                          type: array                        requiredDuringSchedulingIgnoredDuringExecution:                          description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.                          properties:                            nodeSelectorTerms:                              description: Required. A list of node selector terms. The terms are ORed.                              items:                                description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.                                properties:                                  matchExpressions:                                    description: A list of node selector requirements by node's labels.                                    items:                                      description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: The label key that the selector applies to.                                          type: string                                        operator:                                          description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                          type: string                                        values:                                          description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                  matchFields:                                    description: A list of node selector requirements by node's fields.                                    items:                                      description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: The label key that the selector applies to.                                          type: string                                        operator:                                          description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                          type: string                                        values:                                          description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                type: object                                x-kubernetes-map-type: atomic                              type: array                          required:                            - nodeSelectorTerms                          type: object                          x-kubernetes-map-type: atomic                      type: object                    podAffinity:                      description: PodAffinity is a group of inter pod affinity scheduling rules                      properties:                        preferredDuringSchedulingIgnoredDuringExecution:                          description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.                          items:                            description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)                            properties:                              podAffinityTerm:                                description: Required. A pod affinity term, associated with the corresponding weight.                                properties:                                  labelSelector:                                    description: A label query over a set of resources, in this case pods.                                    properties:                                      matchExpressions:                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                        items:                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: key is the label key that the selector applies to.                                              type: string                                            operator:                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                              type: string                                            values:                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchLabels:                                        additionalProperties:                                          type: string                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                        type: object                                    type: object                                    x-kubernetes-map-type: atomic                                  namespaceSelector:                                    description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                    properties:                                      matchExpressions:                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                        items:                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: key is the label key that the selector applies to.                                              type: string                                            operator:                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                              type: string                                            values:                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchLabels:                                        additionalProperties:                                          type: string                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                        type: object                                    type: object                                    x-kubernetes-map-type: atomic                                  namespaces:                                    description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                    items:                                      type: string                                    type: array                                  topologyKey:                                    description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                    type: string                                required:                                  - topologyKey                                type: object                              weight:                                description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.                                format: int32                                type: integer                            required:                              - podAffinityTerm                              - weight                            type: object                          type: array                        requiredDuringSchedulingIgnoredDuringExecution:                          description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.                          items:                            description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running                            properties:                              labelSelector:                                description: A label query over a set of resources, in this case pods.                                properties:                                  matchExpressions:                                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                    items:                                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: key is the label key that the selector applies to.                                          type: string                                        operator:                                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                          type: string                                        values:                                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                  matchLabels:                                    additionalProperties:                                      type: string                                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                    type: object                                type: object                                x-kubernetes-map-type: atomic                              namespaceSelector:                                description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                properties:                                  matchExpressions:                                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                    items:                                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: key is the label key that the selector applies to.                                          type: string                                        operator:                                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                          type: string                                        values:                                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                  matchLabels:                                    additionalProperties:                                      type: string                                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                    type: object                                type: object                                x-kubernetes-map-type: atomic                              namespaces:                                description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                items:                                  type: string                                type: array                              topologyKey:                                description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                type: string                            required:                              - topologyKey                            type: object                          type: array                      type: object                    podAntiAffinity:                      description: PodAntiAffinity is a group of inter pod anti affinity scheduling rules                      properties:                        preferredDuringSchedulingIgnoredDuringExecution:                          description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.                          items:                            description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)                            properties:                              podAffinityTerm:                                description: Required. A pod affinity term, associated with the corresponding weight.                                properties:                                  labelSelector:                                    description: A label query over a set of resources, in this case pods.                                    properties:                                      matchExpressions:                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                        items:                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: key is the label key that the selector applies to.                                              type: string                                            operator:                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                              type: string                                            values:                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchLabels:                                        additionalProperties:                                          type: string                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                        type: object                                    type: object                                    x-kubernetes-map-type: atomic                                  namespaceSelector:                                    description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                    properties:                                      matchExpressions:                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                        items:                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: key is the label key that the selector applies to.                                              type: string                                            operator:                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                              type: string                                            values:                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchLabels:                                        additionalProperties:                                          type: string                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                        type: object                                    type: object                                    x-kubernetes-map-type: atomic                                  namespaces:                                    description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                    items:                                      type: string                                    type: array                                  topologyKey:                                    description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                    type: string                                required:                                  - topologyKey                                type: object                              weight:                                description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.                                format: int32                                type: integer                            required:                              - podAffinityTerm                              - weight                            type: object                          type: array                        requiredDuringSchedulingIgnoredDuringExecution:                          description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.                          items:                            description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running                            properties:                              labelSelector:                                description: A label query over a set of resources, in this case pods.                                properties:                                  matchExpressions:                                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                    items:                                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: key is the label key that the selector applies to.                                          type: string                                        operator:                                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                          type: string                                        values:                                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                  matchLabels:                                    additionalProperties:                                      type: string                                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                    type: object                                type: object                                x-kubernetes-map-type: atomic                              namespaceSelector:                                description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                properties:                                  matchExpressions:                                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                    items:                                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: key is the label key that the selector applies to.                                          type: string                                        operator:                                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                          type: string                                        values:                                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                  matchLabels:                                    additionalProperties:                                      type: string                                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                    type: object                                type: object                                x-kubernetes-map-type: atomic                              namespaces:                                description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                items:                                  type: string                                type: array                              topologyKey:                                description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                type: string                            required:                              - topologyKey                            type: object                          type: array                      type: object                    tolerations:                      description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>                      items:                        description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.                        properties:                          effect:                            description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.                            type: string                          key:                            description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.                            type: string                          operator:                            description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.                            type: string                          tolerationSeconds:                            description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.                            format: int64                            type: integer                          value:                            description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.                            type: string                        type: object                      type: array                    topologySpreadConstraints:                      description: TopologySpreadConstraint specifies how to spread matching pods among the given topology                      items:                        description: TopologySpreadConstraint specifies how to spread matching pods among the given topology.                        properties:                          labelSelector:                            description: LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.                            properties:                              matchExpressions:                                description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                items:                                  description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                  properties:                                    key:                                      description: key is the label key that the selector applies to.                                      type: string                                    operator:                                      description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                      type: string                                    values:                                      description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                      items:                                        type: string                                      type: array                                  required:                                    - key                                    - operator                                  type: object                                type: array                              matchLabels:                                additionalProperties:                                  type: string                                description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                type: object                            type: object                            x-kubernetes-map-type: atomic                          matchLabelKeys:                            description: "MatchLabelKeys is a set of pod label keys to select the pods over which spreading will be calculated. The keys are used to lookup values from the incoming pod labels, those key-value labels are ANDed with labelSelector to select the group of existing pods over which spreading will be calculated for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when LabelSelector isn't set. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector. \n This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default)."                            items:                              type: string                            type: array                            x-kubernetes-list-type: atomic                          maxSkew:                            description: 'MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | |  P P  |  P P  |   P   | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It''s a required field. Default value is 1 and 0 is not allowed.'                            format: int32                            type: integer                          minDomains:                            description: "MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats \"global minimum\" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule. \n For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | |  P P  |  P P  |  P P  | The number of domains is less than 5(MinDomains), so \"global minimum\" is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew. \n This is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default)."                            format: int32                            type: integer                          nodeAffinityPolicy:                            description: "NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. \n If this value is nil, the behavior is equivalent to the Honor policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag."                            type: string                          nodeTaintsPolicy:                            description: "NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included. \n If this value is nil, the behavior is equivalent to the Ignore policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag."                            type: string                          topologyKey:                            description: TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each <key, value> as a "bucket", and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes meet the requirements of nodeAffinityPolicy and nodeTaintsPolicy. e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology. And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology. It's a required field.                            type: string                          whenUnsatisfiable:                            description: 'WhenUnsatisfiable indicates how to deal with a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered "Unsatisfiable" for an incoming pod if and only if every possible node assignment for that pod would violate "MaxSkew" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P |   P   |   P   | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won''t make it *more* imbalanced. It''s a required field.'                            type: string                        required:                          - maxSkew                          - topologyKey                          - whenUnsatisfiable                        type: object                      type: array                  type: object                resources:                  description: Resources is the resource requirements for the COSI driver                  properties:                    claims:                      description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers."                      items:                        description: ResourceClaim references one entry in PodSpec.ResourceClaims.                        properties:                          name:                            description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.                            type: string                        required:                          - name                        type: object                      type: array                      x-kubernetes-list-map-keys:                        - name                      x-kubernetes-list-type: map                    limits:                      additionalProperties:                        anyOf:                          - type: integer                          - type: string                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                        x-kubernetes-int-or-string: true                      description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                      type: object                    requests:                      additionalProperties:                        anyOf:                          - type: integer                          - type: string                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                        x-kubernetes-int-or-string: true                      description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                      type: object                  type: object              type: object          required:            - metadata            - spec          type: object      served: true      storage: true---# Source: rook-ceph/templates/resources.yamlapiVersion: apiextensions.k8s.io/v1kind: CustomResourceDefinitionmetadata:  annotations:    controller-gen.kubebuilder.io/version: v0.11.3    helm.sh/resource-policy: keep  creationTimestamp: null  name: cephfilesystemmirrors.ceph.rook.iospec:  group: ceph.rook.io  names:    kind: CephFilesystemMirror    listKind: CephFilesystemMirrorList    plural: cephfilesystemmirrors    singular: cephfilesystemmirror  scope: Namespaced  versions:    - additionalPrinterColumns:        - jsonPath: .status.phase          name: Phase          type: string      name: v1      schema:        openAPIV3Schema:          description: CephFilesystemMirror is the Ceph Filesystem Mirror object definition          properties:            apiVersion:              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'              type: string            kind:              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'              type: string            metadata:              type: object            spec:              description: FilesystemMirroringSpec is the filesystem mirroring specification              properties:                annotations:                  additionalProperties:                    type: string                  description: The annotations-related configuration to add/set on each Pod related object.                  nullable: true                  type: object                labels:                  additionalProperties:                    type: string                  description: The labels-related configuration to add/set on each Pod related object.                  nullable: true                  type: object                placement:                  description: The affinity to place the rgw pods (default is to place on any available node)                  nullable: true                  properties:                    nodeAffinity:                      description: NodeAffinity is a group of node affinity scheduling rules                      properties:                        preferredDuringSchedulingIgnoredDuringExecution:                          description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.                          items:                            description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).                            properties:                              preference:                                description: A node selector term, associated with the corresponding weight.                                properties:                                  matchExpressions:                                    description: A list of node selector requirements by node's labels.                                    items:                                      description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: The label key that the selector applies to.                                          type: string                                        operator:                                          description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                          type: string                                        values:                                          description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                  matchFields:                                    description: A list of node selector requirements by node's fields.                                    items:                                      description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: The label key that the selector applies to.                                          type: string                                        operator:                                          description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                          type: string                                        values:                                          description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                type: object                                x-kubernetes-map-type: atomic                              weight:                                description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.                                format: int32                                type: integer                            required:                              - preference                              - weight                            type: object                          type: array                        requiredDuringSchedulingIgnoredDuringExecution:                          description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.                          properties:                            nodeSelectorTerms:                              description: Required. A list of node selector terms. The terms are ORed.                              items:                                description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.                                properties:                                  matchExpressions:                                    description: A list of node selector requirements by node's labels.                                    items:                                      description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: The label key that the selector applies to.                                          type: string                                        operator:                                          description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                          type: string                                        values:                                          description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                  matchFields:                                    description: A list of node selector requirements by node's fields.                                    items:                                      description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: The label key that the selector applies to.                                          type: string                                        operator:                                          description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                          type: string                                        values:                                          description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                type: object                                x-kubernetes-map-type: atomic                              type: array                          required:                            - nodeSelectorTerms                          type: object                          x-kubernetes-map-type: atomic                      type: object                    podAffinity:                      description: PodAffinity is a group of inter pod affinity scheduling rules                      properties:                        preferredDuringSchedulingIgnoredDuringExecution:                          description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.                          items:                            description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)                            properties:                              podAffinityTerm:                                description: Required. A pod affinity term, associated with the corresponding weight.                                properties:                                  labelSelector:                                    description: A label query over a set of resources, in this case pods.                                    properties:                                      matchExpressions:                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                        items:                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: key is the label key that the selector applies to.                                              type: string                                            operator:                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                              type: string                                            values:                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchLabels:                                        additionalProperties:                                          type: string                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                        type: object                                    type: object                                    x-kubernetes-map-type: atomic                                  namespaceSelector:                                    description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                    properties:                                      matchExpressions:                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                        items:                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: key is the label key that the selector applies to.                                              type: string                                            operator:                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                              type: string                                            values:                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchLabels:                                        additionalProperties:                                          type: string                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                        type: object                                    type: object                                    x-kubernetes-map-type: atomic                                  namespaces:                                    description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                    items:                                      type: string                                    type: array                                  topologyKey:                                    description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                    type: string                                required:                                  - topologyKey                                type: object                              weight:                                description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.                                format: int32                                type: integer                            required:                              - podAffinityTerm                              - weight                            type: object                          type: array                        requiredDuringSchedulingIgnoredDuringExecution:                          description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.                          items:                            description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running                            properties:                              labelSelector:                                description: A label query over a set of resources, in this case pods.                                properties:                                  matchExpressions:                                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                    items:                                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: key is the label key that the selector applies to.                                          type: string                                        operator:                                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                          type: string                                        values:                                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                  matchLabels:                                    additionalProperties:                                      type: string                                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                    type: object                                type: object                                x-kubernetes-map-type: atomic                              namespaceSelector:                                description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                properties:                                  matchExpressions:                                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                    items:                                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: key is the label key that the selector applies to.                                          type: string                                        operator:                                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                          type: string                                        values:                                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                  matchLabels:                                    additionalProperties:                                      type: string                                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                    type: object                                type: object                                x-kubernetes-map-type: atomic                              namespaces:                                description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                items:                                  type: string                                type: array                              topologyKey:                                description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                type: string                            required:                              - topologyKey                            type: object                          type: array                      type: object                    podAntiAffinity:                      description: PodAntiAffinity is a group of inter pod anti affinity scheduling rules                      properties:                        preferredDuringSchedulingIgnoredDuringExecution:                          description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.                          items:                            description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)                            properties:                              podAffinityTerm:                                description: Required. A pod affinity term, associated with the corresponding weight.                                properties:                                  labelSelector:                                    description: A label query over a set of resources, in this case pods.                                    properties:                                      matchExpressions:                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                        items:                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: key is the label key that the selector applies to.                                              type: string                                            operator:                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                              type: string                                            values:                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchLabels:                                        additionalProperties:                                          type: string                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                        type: object                                    type: object                                    x-kubernetes-map-type: atomic                                  namespaceSelector:                                    description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                    properties:                                      matchExpressions:                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                        items:                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: key is the label key that the selector applies to.                                              type: string                                            operator:                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                              type: string                                            values:                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchLabels:                                        additionalProperties:                                          type: string                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                        type: object                                    type: object                                    x-kubernetes-map-type: atomic                                  namespaces:                                    description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                    items:                                      type: string                                    type: array                                  topologyKey:                                    description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                    type: string                                required:                                  - topologyKey                                type: object                              weight:                                description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.                                format: int32                                type: integer                            required:                              - podAffinityTerm                              - weight                            type: object                          type: array                        requiredDuringSchedulingIgnoredDuringExecution:                          description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.                          items:                            description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running                            properties:                              labelSelector:                                description: A label query over a set of resources, in this case pods.                                properties:                                  matchExpressions:                                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                    items:                                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: key is the label key that the selector applies to.                                          type: string                                        operator:                                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                          type: string                                        values:                                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                  matchLabels:                                    additionalProperties:                                      type: string                                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                    type: object                                type: object                                x-kubernetes-map-type: atomic                              namespaceSelector:                                description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                properties:                                  matchExpressions:                                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                    items:                                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: key is the label key that the selector applies to.                                          type: string                                        operator:                                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                          type: string                                        values:                                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                  matchLabels:                                    additionalProperties:                                      type: string                                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                    type: object                                type: object                                x-kubernetes-map-type: atomic                              namespaces:                                description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                items:                                  type: string                                type: array                              topologyKey:                                description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                type: string                            required:                              - topologyKey                            type: object                          type: array                      type: object                    tolerations:                      description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>                      items:                        description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.                        properties:                          effect:                            description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.                            type: string                          key:                            description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.                            type: string                          operator:                            description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.                            type: string                          tolerationSeconds:                            description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.                            format: int64                            type: integer                          value:                            description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.                            type: string                        type: object                      type: array                    topologySpreadConstraints:                      description: TopologySpreadConstraint specifies how to spread matching pods among the given topology                      items:                        description: TopologySpreadConstraint specifies how to spread matching pods among the given topology.                        properties:                          labelSelector:                            description: LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.                            properties:                              matchExpressions:                                description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                items:                                  description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                  properties:                                    key:                                      description: key is the label key that the selector applies to.                                      type: string                                    operator:                                      description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                      type: string                                    values:                                      description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                      items:                                        type: string                                      type: array                                  required:                                    - key                                    - operator                                  type: object                                type: array                              matchLabels:                                additionalProperties:                                  type: string                                description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                type: object                            type: object                            x-kubernetes-map-type: atomic                          matchLabelKeys:                            description: "MatchLabelKeys is a set of pod label keys to select the pods over which spreading will be calculated. The keys are used to lookup values from the incoming pod labels, those key-value labels are ANDed with labelSelector to select the group of existing pods over which spreading will be calculated for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when LabelSelector isn't set. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector. \n This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default)."                            items:                              type: string                            type: array                            x-kubernetes-list-type: atomic                          maxSkew:                            description: 'MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | |  P P  |  P P  |   P   | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It''s a required field. Default value is 1 and 0 is not allowed.'                            format: int32                            type: integer                          minDomains:                            description: "MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats \"global minimum\" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule. \n For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | |  P P  |  P P  |  P P  | The number of domains is less than 5(MinDomains), so \"global minimum\" is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew. \n This is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default)."                            format: int32                            type: integer                          nodeAffinityPolicy:                            description: "NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. \n If this value is nil, the behavior is equivalent to the Honor policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag."                            type: string                          nodeTaintsPolicy:                            description: "NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included. \n If this value is nil, the behavior is equivalent to the Ignore policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag."                            type: string                          topologyKey:                            description: TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each <key, value> as a "bucket", and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes meet the requirements of nodeAffinityPolicy and nodeTaintsPolicy. e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology. And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology. It's a required field.                            type: string                          whenUnsatisfiable:                            description: 'WhenUnsatisfiable indicates how to deal with a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered "Unsatisfiable" for an incoming pod if and only if every possible node assignment for that pod would violate "MaxSkew" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P |   P   |   P   | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won''t make it *more* imbalanced. It''s a required field.'                            type: string                        required:                          - maxSkew                          - topologyKey                          - whenUnsatisfiable                        type: object                      type: array                  type: object                priorityClassName:                  description: PriorityClassName sets priority class on the cephfs-mirror pods                  type: string                resources:                  description: The resource requirements for the cephfs-mirror pods                  nullable: true                  properties:                    claims:                      description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers."                      items:                        description: ResourceClaim references one entry in PodSpec.ResourceClaims.                        properties:                          name:                            description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.                            type: string                        required:                          - name                        type: object                      type: array                      x-kubernetes-list-map-keys:                        - name                      x-kubernetes-list-type: map                    limits:                      additionalProperties:                        anyOf:                          - type: integer                          - type: string                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                        x-kubernetes-int-or-string: true                      description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                      type: object                    requests:                      additionalProperties:                        anyOf:                          - type: integer                          - type: string                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                        x-kubernetes-int-or-string: true                      description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                      type: object                  type: object              type: object            status:              description: Status represents the status of an object              properties:                conditions:                  items:                    description: Condition represents a status condition on any Rook-Ceph Custom Resource.                    properties:                      lastHeartbeatTime:                        format: date-time                        type: string                      lastTransitionTime:                        format: date-time                        type: string                      message:                        type: string                      reason:                        description: ConditionReason is a reason for a condition                        type: string                      status:                        type: string                      type:                        description: ConditionType represent a resource's status                        type: string                    type: object                  type: array                observedGeneration:                  description: ObservedGeneration is the latest generation observed by the controller.                  format: int64                  type: integer                phase:                  type: string              type: object          required:            - metadata            - spec          type: object      served: true      storage: true      subresources:        status: {}---# Source: rook-ceph/templates/resources.yamlapiVersion: apiextensions.k8s.io/v1kind: CustomResourceDefinitionmetadata:  annotations:    controller-gen.kubebuilder.io/version: v0.11.3    helm.sh/resource-policy: keep  creationTimestamp: null  name: cephfilesystems.ceph.rook.iospec:  group: ceph.rook.io  names:    kind: CephFilesystem    listKind: CephFilesystemList    plural: cephfilesystems    singular: cephfilesystem  scope: Namespaced  versions:    - additionalPrinterColumns:        - description: Number of desired active MDS daemons          jsonPath: .spec.metadataServer.activeCount          name: ActiveMDS          type: string        - jsonPath: .metadata.creationTimestamp          name: Age          type: date        - jsonPath: .status.phase          name: Phase          type: string      name: v1      schema:        openAPIV3Schema:          description: CephFilesystem represents a Ceph Filesystem          properties:            apiVersion:              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'              type: string            kind:              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'              type: string            metadata:              type: object            spec:              description: FilesystemSpec represents the spec of a file system              properties:                dataPools:                  description: The data pool settings, with optional predefined pool name.                  items:                    description: NamedPoolSpec represents the named ceph pool spec                    properties:                      compressionMode:                        description: 'DEPRECATED: use Parameters instead, e.g., Parameters["compression_mode"] = "force" The inline compression mode in Bluestore OSD to set to (options are: none, passive, aggressive, force) Do NOT set a default value for kubebuilder as this will override the Parameters'                        enum:                          - none                          - passive                          - aggressive                          - force                          - ""                        nullable: true                        type: string                      crushRoot:                        description: The root of the crush hierarchy utilized by the pool                        nullable: true                        type: string                      deviceClass:                        description: The device class the OSD should set to for use in the pool                        nullable: true                        type: string                      enableRBDStats:                        description: EnableRBDStats is used to enable gathering of statistics for all RBD images in the pool                        type: boolean                      erasureCoded:                        description: The erasure code settings                        properties:                          algorithm:                            description: The algorithm for erasure coding                            type: string                          codingChunks:                            description: Number of coding chunks per object in an erasure coded storage pool (required for erasure-coded pool type). This is the number of OSDs that can be lost simultaneously before data cannot be recovered.                            minimum: 0                            type: integer                          dataChunks:                            description: Number of data chunks per object in an erasure coded storage pool (required for erasure-coded pool type). The number of chunks required to recover an object when any single OSD is lost is the same as dataChunks so be aware that the larger the number of data chunks, the higher the cost of recovery.                            minimum: 0                            type: integer                        required:                          - codingChunks                          - dataChunks                        type: object                      failureDomain:                        description: 'The failure domain: osd/host/(region or zone if available) - technically also any type in the crush map'                        type: string                      mirroring:                        description: The mirroring settings                        properties:                          enabled:                            description: Enabled whether this pool is mirrored or not                            type: boolean                          mode:                            description: 'Mode is the mirroring mode: either pool or image'                            type: string                          peers:                            description: Peers represents the peers spec                            nullable: true                            properties:                              secretNames:                                description: SecretNames represents the Kubernetes Secret names to add rbd-mirror or cephfs-mirror peers                                items:                                  type: string                                type: array                            type: object                          snapshotSchedules:                            description: SnapshotSchedules is the scheduling of snapshot for mirrored images/pools                            items:                              description: SnapshotScheduleSpec represents the snapshot scheduling settings of a mirrored pool                              properties:                                interval:                                  description: Interval represent the periodicity of the snapshot.                                  type: string                                path:                                  description: Path is the path to snapshot, only valid for CephFS                                  type: string                                startTime:                                  description: StartTime indicates when to start the snapshot                                  type: string                              type: object                            type: array                        type: object                      name:                        description: Name of the pool                        type: string                      parameters:                        additionalProperties:                          type: string                        description: Parameters is a list of properties to enable on a given pool                        nullable: true                        type: object                        x-kubernetes-preserve-unknown-fields: true                      quotas:                        description: The quota settings                        nullable: true                        properties:                          maxBytes:                            description: MaxBytes represents the quota in bytes Deprecated in favor of MaxSize                            format: int64                            type: integer                          maxObjects:                            description: MaxObjects represents the quota in objects                            format: int64                            type: integer                          maxSize:                            description: MaxSize represents the quota in bytes as a string                            pattern: ^[0-9]+[\.]?[0-9]*([KMGTPE]i|[kMGTPE])?$                            type: string                        type: object                      replicated:                        description: The replication settings                        properties:                          hybridStorage:                            description: HybridStorage represents hybrid storage tier settings                            nullable: true                            properties:                              primaryDeviceClass:                                description: PrimaryDeviceClass represents high performance tier (for example SSD or NVME) for Primary OSD                                minLength: 1                                type: string                              secondaryDeviceClass:                                description: SecondaryDeviceClass represents low performance tier (for example HDDs) for remaining OSDs                                minLength: 1                                type: string                            required:                              - primaryDeviceClass                              - secondaryDeviceClass                            type: object                          replicasPerFailureDomain:                            description: ReplicasPerFailureDomain the number of replica in the specified failure domain                            minimum: 1                            type: integer                          requireSafeReplicaSize:                            description: RequireSafeReplicaSize if false allows you to set replica 1                            type: boolean                          size:                            description: Size - Number of copies per object in a replicated storage pool, including the object itself (required for replicated pool type)                            minimum: 0                            type: integer                          subFailureDomain:                            description: SubFailureDomain the name of the sub-failure domain                            type: string                          targetSizeRatio:                            description: TargetSizeRatio gives a hint (%) to Ceph in terms of expected consumption of the total cluster capacity                            type: number                        required:                          - size                        type: object                      statusCheck:                        description: The mirroring statusCheck                        properties:                          mirror:                            description: HealthCheckSpec represents the health check of an object store bucket                            nullable: true                            properties:                              disabled:                                type: boolean                              interval:                                description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds                                type: string                              timeout:                                type: string                            type: object                        type: object                        x-kubernetes-preserve-unknown-fields: true                    type: object                  nullable: true                  type: array                metadataPool:                  description: The metadata pool settings                  nullable: true                  properties:                    compressionMode:                      description: 'DEPRECATED: use Parameters instead, e.g., Parameters["compression_mode"] = "force" The inline compression mode in Bluestore OSD to set to (options are: none, passive, aggressive, force) Do NOT set a default value for kubebuilder as this will override the Parameters'                      enum:                        - none                        - passive                        - aggressive                        - force                        - ""                      nullable: true                      type: string                    crushRoot:                      description: The root of the crush hierarchy utilized by the pool                      nullable: true                      type: string                    deviceClass:                      description: The device class the OSD should set to for use in the pool                      nullable: true                      type: string                    enableRBDStats:                      description: EnableRBDStats is used to enable gathering of statistics for all RBD images in the pool                      type: boolean                    erasureCoded:                      description: The erasure code settings                      properties:                        algorithm:                          description: The algorithm for erasure coding                          type: string                        codingChunks:                          description: Number of coding chunks per object in an erasure coded storage pool (required for erasure-coded pool type). This is the number of OSDs that can be lost simultaneously before data cannot be recovered.                          minimum: 0                          type: integer                        dataChunks:                          description: Number of data chunks per object in an erasure coded storage pool (required for erasure-coded pool type). The number of chunks required to recover an object when any single OSD is lost is the same as dataChunks so be aware that the larger the number of data chunks, the higher the cost of recovery.                          minimum: 0                          type: integer                      required:                        - codingChunks                        - dataChunks                      type: object                    failureDomain:                      description: 'The failure domain: osd/host/(region or zone if available) - technically also any type in the crush map'                      type: string                    mirroring:                      description: The mirroring settings                      properties:                        enabled:                          description: Enabled whether this pool is mirrored or not                          type: boolean                        mode:                          description: 'Mode is the mirroring mode: either pool or image'                          type: string                        peers:                          description: Peers represents the peers spec                          nullable: true                          properties:                            secretNames:                              description: SecretNames represents the Kubernetes Secret names to add rbd-mirror or cephfs-mirror peers                              items:                                type: string                              type: array                          type: object                        snapshotSchedules:                          description: SnapshotSchedules is the scheduling of snapshot for mirrored images/pools                          items:                            description: SnapshotScheduleSpec represents the snapshot scheduling settings of a mirrored pool                            properties:                              interval:                                description: Interval represent the periodicity of the snapshot.                                type: string                              path:                                description: Path is the path to snapshot, only valid for CephFS                                type: string                              startTime:                                description: StartTime indicates when to start the snapshot                                type: string                            type: object                          type: array                      type: object                    parameters:                      additionalProperties:                        type: string                      description: Parameters is a list of properties to enable on a given pool                      nullable: true                      type: object                      x-kubernetes-preserve-unknown-fields: true                    quotas:                      description: The quota settings                      nullable: true                      properties:                        maxBytes:                          description: MaxBytes represents the quota in bytes Deprecated in favor of MaxSize                          format: int64                          type: integer                        maxObjects:                          description: MaxObjects represents the quota in objects                          format: int64                          type: integer                        maxSize:                          description: MaxSize represents the quota in bytes as a string                          pattern: ^[0-9]+[\.]?[0-9]*([KMGTPE]i|[kMGTPE])?$                          type: string                      type: object                    replicated:                      description: The replication settings                      properties:                        hybridStorage:                          description: HybridStorage represents hybrid storage tier settings                          nullable: true                          properties:                            primaryDeviceClass:                              description: PrimaryDeviceClass represents high performance tier (for example SSD or NVME) for Primary OSD                              minLength: 1                              type: string                            secondaryDeviceClass:                              description: SecondaryDeviceClass represents low performance tier (for example HDDs) for remaining OSDs                              minLength: 1                              type: string                          required:                            - primaryDeviceClass                            - secondaryDeviceClass                          type: object                        replicasPerFailureDomain:                          description: ReplicasPerFailureDomain the number of replica in the specified failure domain                          minimum: 1                          type: integer                        requireSafeReplicaSize:                          description: RequireSafeReplicaSize if false allows you to set replica 1                          type: boolean                        size:                          description: Size - Number of copies per object in a replicated storage pool, including the object itself (required for replicated pool type)                          minimum: 0                          type: integer                        subFailureDomain:                          description: SubFailureDomain the name of the sub-failure domain                          type: string                        targetSizeRatio:                          description: TargetSizeRatio gives a hint (%) to Ceph in terms of expected consumption of the total cluster capacity                          type: number                      required:                        - size                      type: object                    statusCheck:                      description: The mirroring statusCheck                      properties:                        mirror:                          description: HealthCheckSpec represents the health check of an object store bucket                          nullable: true                          properties:                            disabled:                              type: boolean                            interval:                              description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds                              type: string                            timeout:                              type: string                          type: object                      type: object                      x-kubernetes-preserve-unknown-fields: true                  type: object                metadataServer:                  description: The mds pod info                  properties:                    activeCount:                      description: The number of metadata servers that are active. The remaining servers in the cluster will be in standby mode.                      format: int32                      maximum: 10                      minimum: 1                      type: integer                    activeStandby:                      description: Whether each active MDS instance will have an active standby with a warm metadata cache for faster failover. If false, standbys will still be available, but will not have a warm metadata cache.                      type: boolean                    annotations:                      additionalProperties:                        type: string                      description: The annotations-related configuration to add/set on each Pod related object.                      nullable: true                      type: object                      x-kubernetes-preserve-unknown-fields: true                    labels:                      additionalProperties:                        type: string                      description: The labels-related configuration to add/set on each Pod related object.                      nullable: true                      type: object                      x-kubernetes-preserve-unknown-fields: true                    livenessProbe:                      description: ProbeSpec is a wrapper around Probe so it can be enabled or disabled for a Ceph daemon                      properties:                        disabled:                          description: Disabled determines whether probe is disable or not                          type: boolean                        probe:                          description: Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.                          properties:                            exec:                              description: Exec specifies the action to take.                              properties:                                command:                                  description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.                                  items:                                    type: string                                  type: array                              type: object                            failureThreshold:                              description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.                              format: int32                              type: integer                            grpc:                              description: GRPC specifies an action involving a GRPC port.                              properties:                                port:                                  description: Port number of the gRPC service. Number must be in the range 1 to 65535.                                  format: int32                                  type: integer                                service:                                  description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC."                                  type: string                              required:                                - port                              type: object                            httpGet:                              description: HTTPGet specifies the http request to perform.                              properties:                                host:                                  description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.                                  type: string                                httpHeaders:                                  description: Custom headers to set in the request. HTTP allows repeated headers.                                  items:                                    description: HTTPHeader describes a custom header to be used in HTTP probes                                    properties:                                      name:                                        description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.                                        type: string                                      value:                                        description: The header field value                                        type: string                                    required:                                      - name                                      - value                                    type: object                                  type: array                                path:                                  description: Path to access on the HTTP server.                                  type: string                                port:                                  anyOf:                                    - type: integer                                    - type: string                                  description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.                                  x-kubernetes-int-or-string: true                                scheme:                                  description: Scheme to use for connecting to the host. Defaults to HTTP.                                  type: string                              required:                                - port                              type: object                            initialDelaySeconds:                              description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'                              format: int32                              type: integer                            periodSeconds:                              description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.                              format: int32                              type: integer                            successThreshold:                              description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.                              format: int32                              type: integer                            tcpSocket:                              description: TCPSocket specifies an action involving a TCP port.                              properties:                                host:                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'                                  type: string                                port:                                  anyOf:                                    - type: integer                                    - type: string                                  description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.                                  x-kubernetes-int-or-string: true                              required:                                - port                              type: object                            terminationGracePeriodSeconds:                              description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.                              format: int64                              type: integer                            timeoutSeconds:                              description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'                              format: int32                              type: integer                          type: object                      type: object                    placement:                      description: The affinity to place the mds pods (default is to place on all available node) with a daemonset                      nullable: true                      properties:                        nodeAffinity:                          description: NodeAffinity is a group of node affinity scheduling rules                          properties:                            preferredDuringSchedulingIgnoredDuringExecution:                              description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.                              items:                                description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).                                properties:                                  preference:                                    description: A node selector term, associated with the corresponding weight.                                    properties:                                      matchExpressions:                                        description: A list of node selector requirements by node's labels.                                        items:                                          description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: The label key that the selector applies to.                                              type: string                                            operator:                                              description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                              type: string                                            values:                                              description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchFields:                                        description: A list of node selector requirements by node's fields.                                        items:                                          description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: The label key that the selector applies to.                                              type: string                                            operator:                                              description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                              type: string                                            values:                                              description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                    type: object                                    x-kubernetes-map-type: atomic                                  weight:                                    description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.                                    format: int32                                    type: integer                                required:                                  - preference                                  - weight                                type: object                              type: array                            requiredDuringSchedulingIgnoredDuringExecution:                              description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.                              properties:                                nodeSelectorTerms:                                  description: Required. A list of node selector terms. The terms are ORed.                                  items:                                    description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.                                    properties:                                      matchExpressions:                                        description: A list of node selector requirements by node's labels.                                        items:                                          description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: The label key that the selector applies to.                                              type: string                                            operator:                                              description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                              type: string                                            values:                                              description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchFields:                                        description: A list of node selector requirements by node's fields.                                        items:                                          description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: The label key that the selector applies to.                                              type: string                                            operator:                                              description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                              type: string                                            values:                                              description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                    type: object                                    x-kubernetes-map-type: atomic                                  type: array                              required:                                - nodeSelectorTerms                              type: object                              x-kubernetes-map-type: atomic                          type: object                        podAffinity:                          description: PodAffinity is a group of inter pod affinity scheduling rules                          properties:                            preferredDuringSchedulingIgnoredDuringExecution:                              description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.                              items:                                description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)                                properties:                                  podAffinityTerm:                                    description: Required. A pod affinity term, associated with the corresponding weight.                                    properties:                                      labelSelector:                                        description: A label query over a set of resources, in this case pods.                                        properties:                                          matchExpressions:                                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                            items:                                              description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                              properties:                                                key:                                                  description: key is the label key that the selector applies to.                                                  type: string                                                operator:                                                  description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                  type: string                                                values:                                                  description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                  items:                                                    type: string                                                  type: array                                              required:                                                - key                                                - operator                                              type: object                                            type: array                                          matchLabels:                                            additionalProperties:                                              type: string                                            description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                            type: object                                        type: object                                        x-kubernetes-map-type: atomic                                      namespaceSelector:                                        description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                        properties:                                          matchExpressions:                                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                            items:                                              description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                              properties:                                                key:                                                  description: key is the label key that the selector applies to.                                                  type: string                                                operator:                                                  description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                  type: string                                                values:                                                  description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                  items:                                                    type: string                                                  type: array                                              required:                                                - key                                                - operator                                              type: object                                            type: array                                          matchLabels:                                            additionalProperties:                                              type: string                                            description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                            type: object                                        type: object                                        x-kubernetes-map-type: atomic                                      namespaces:                                        description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                        items:                                          type: string                                        type: array                                      topologyKey:                                        description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                        type: string                                    required:                                      - topologyKey                                    type: object                                  weight:                                    description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.                                    format: int32                                    type: integer                                required:                                  - podAffinityTerm                                  - weight                                type: object                              type: array                            requiredDuringSchedulingIgnoredDuringExecution:                              description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.                              items:                                description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running                                properties:                                  labelSelector:                                    description: A label query over a set of resources, in this case pods.                                    properties:                                      matchExpressions:                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                        items:                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: key is the label key that the selector applies to.                                              type: string                                            operator:                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                              type: string                                            values:                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchLabels:                                        additionalProperties:                                          type: string                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                        type: object                                    type: object                                    x-kubernetes-map-type: atomic                                  namespaceSelector:                                    description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                    properties:                                      matchExpressions:                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                        items:                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: key is the label key that the selector applies to.                                              type: string                                            operator:                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                              type: string                                            values:                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchLabels:                                        additionalProperties:                                          type: string                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                        type: object                                    type: object                                    x-kubernetes-map-type: atomic                                  namespaces:                                    description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                    items:                                      type: string                                    type: array                                  topologyKey:                                    description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                    type: string                                required:                                  - topologyKey                                type: object                              type: array                          type: object                        podAntiAffinity:                          description: PodAntiAffinity is a group of inter pod anti affinity scheduling rules                          properties:                            preferredDuringSchedulingIgnoredDuringExecution:                              description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.                              items:                                description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)                                properties:                                  podAffinityTerm:                                    description: Required. A pod affinity term, associated with the corresponding weight.                                    properties:                                      labelSelector:                                        description: A label query over a set of resources, in this case pods.                                        properties:                                          matchExpressions:                                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                            items:                                              description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                              properties:                                                key:                                                  description: key is the label key that the selector applies to.                                                  type: string                                                operator:                                                  description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                  type: string                                                values:                                                  description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                  items:                                                    type: string                                                  type: array                                              required:                                                - key                                                - operator                                              type: object                                            type: array                                          matchLabels:                                            additionalProperties:                                              type: string                                            description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                            type: object                                        type: object                                        x-kubernetes-map-type: atomic                                      namespaceSelector:                                        description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                        properties:                                          matchExpressions:                                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                            items:                                              description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                              properties:                                                key:                                                  description: key is the label key that the selector applies to.                                                  type: string                                                operator:                                                  description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                  type: string                                                values:                                                  description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                  items:                                                    type: string                                                  type: array                                              required:                                                - key                                                - operator                                              type: object                                            type: array                                          matchLabels:                                            additionalProperties:                                              type: string                                            description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                            type: object                                        type: object                                        x-kubernetes-map-type: atomic                                      namespaces:                                        description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                        items:                                          type: string                                        type: array                                      topologyKey:                                        description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                        type: string                                    required:                                      - topologyKey                                    type: object                                  weight:                                    description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.                                    format: int32                                    type: integer                                required:                                  - podAffinityTerm                                  - weight                                type: object                              type: array                            requiredDuringSchedulingIgnoredDuringExecution:                              description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.                              items:                                description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running                                properties:                                  labelSelector:                                    description: A label query over a set of resources, in this case pods.                                    properties:                                      matchExpressions:                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                        items:                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: key is the label key that the selector applies to.                                              type: string                                            operator:                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                              type: string                                            values:                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchLabels:                                        additionalProperties:                                          type: string                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                        type: object                                    type: object                                    x-kubernetes-map-type: atomic                                  namespaceSelector:                                    description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                    properties:                                      matchExpressions:                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                        items:                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: key is the label key that the selector applies to.                                              type: string                                            operator:                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                              type: string                                            values:                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchLabels:                                        additionalProperties:                                          type: string                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                        type: object                                    type: object                                    x-kubernetes-map-type: atomic                                  namespaces:                                    description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                    items:                                      type: string                                    type: array                                  topologyKey:                                    description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                    type: string                                required:                                  - topologyKey                                type: object                              type: array                          type: object                        tolerations:                          description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>                          items:                            description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.                            properties:                              effect:                                description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.                                type: string                              key:                                description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.                                type: string                              operator:                                description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.                                type: string                              tolerationSeconds:                                description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.                                format: int64                                type: integer                              value:                                description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.                                type: string                            type: object                          type: array                        topologySpreadConstraints:                          description: TopologySpreadConstraint specifies how to spread matching pods among the given topology                          items:                            description: TopologySpreadConstraint specifies how to spread matching pods among the given topology.                            properties:                              labelSelector:                                description: LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.                                properties:                                  matchExpressions:                                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                    items:                                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: key is the label key that the selector applies to.                                          type: string                                        operator:                                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                          type: string                                        values:                                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                  matchLabels:                                    additionalProperties:                                      type: string                                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                    type: object                                type: object                                x-kubernetes-map-type: atomic                              matchLabelKeys:                                description: "MatchLabelKeys is a set of pod label keys to select the pods over which spreading will be calculated. The keys are used to lookup values from the incoming pod labels, those key-value labels are ANDed with labelSelector to select the group of existing pods over which spreading will be calculated for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when LabelSelector isn't set. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector. \n This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default)."                                items:                                  type: string                                type: array                                x-kubernetes-list-type: atomic                              maxSkew:                                description: 'MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | |  P P  |  P P  |   P   | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It''s a required field. Default value is 1 and 0 is not allowed.'                                format: int32                                type: integer                              minDomains:                                description: "MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats \"global minimum\" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule. \n For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | |  P P  |  P P  |  P P  | The number of domains is less than 5(MinDomains), so \"global minimum\" is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew. \n This is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default)."                                format: int32                                type: integer                              nodeAffinityPolicy:                                description: "NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. \n If this value is nil, the behavior is equivalent to the Honor policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag."                                type: string                              nodeTaintsPolicy:                                description: "NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included. \n If this value is nil, the behavior is equivalent to the Ignore policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag."                                type: string                              topologyKey:                                description: TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each <key, value> as a "bucket", and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes meet the requirements of nodeAffinityPolicy and nodeTaintsPolicy. e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology. And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology. It's a required field.                                type: string                              whenUnsatisfiable:                                description: 'WhenUnsatisfiable indicates how to deal with a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered "Unsatisfiable" for an incoming pod if and only if every possible node assignment for that pod would violate "MaxSkew" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P |   P   |   P   | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won''t make it *more* imbalanced. It''s a required field.'                                type: string                            required:                              - maxSkew                              - topologyKey                              - whenUnsatisfiable                            type: object                          type: array                      type: object                      x-kubernetes-preserve-unknown-fields: true                    priorityClassName:                      description: PriorityClassName sets priority classes on components                      type: string                    resources:                      description: The resource requirements for the rgw pods                      nullable: true                      properties:                        claims:                          description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers."                          items:                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.                            properties:                              name:                                description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.                                type: string                            required:                              - name                            type: object                          type: array                          x-kubernetes-list-map-keys:                            - name                          x-kubernetes-list-type: map                        limits:                          additionalProperties:                            anyOf:                              - type: integer                              - type: string                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                            x-kubernetes-int-or-string: true                          description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                          type: object                        requests:                          additionalProperties:                            anyOf:                              - type: integer                              - type: string                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                            x-kubernetes-int-or-string: true                          description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                          type: object                      type: object                      x-kubernetes-preserve-unknown-fields: true                    startupProbe:                      description: ProbeSpec is a wrapper around Probe so it can be enabled or disabled for a Ceph daemon                      properties:                        disabled:                          description: Disabled determines whether probe is disable or not                          type: boolean                        probe:                          description: Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.                          properties:                            exec:                              description: Exec specifies the action to take.                              properties:                                command:                                  description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.                                  items:                                    type: string                                  type: array                              type: object                            failureThreshold:                              description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.                              format: int32                              type: integer                            grpc:                              description: GRPC specifies an action involving a GRPC port.                              properties:                                port:                                  description: Port number of the gRPC service. Number must be in the range 1 to 65535.                                  format: int32                                  type: integer                                service:                                  description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC."                                  type: string                              required:                                - port                              type: object                            httpGet:                              description: HTTPGet specifies the http request to perform.                              properties:                                host:                                  description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.                                  type: string                                httpHeaders:                                  description: Custom headers to set in the request. HTTP allows repeated headers.                                  items:                                    description: HTTPHeader describes a custom header to be used in HTTP probes                                    properties:                                      name:                                        description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.                                        type: string                                      value:                                        description: The header field value                                        type: string                                    required:                                      - name                                      - value                                    type: object                                  type: array                                path:                                  description: Path to access on the HTTP server.                                  type: string                                port:                                  anyOf:                                    - type: integer                                    - type: string                                  description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.                                  x-kubernetes-int-or-string: true                                scheme:                                  description: Scheme to use for connecting to the host. Defaults to HTTP.                                  type: string                              required:                                - port                              type: object                            initialDelaySeconds:                              description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'                              format: int32                              type: integer                            periodSeconds:                              description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.                              format: int32                              type: integer                            successThreshold:                              description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.                              format: int32                              type: integer                            tcpSocket:                              description: TCPSocket specifies an action involving a TCP port.                              properties:                                host:                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'                                  type: string                                port:                                  anyOf:                                    - type: integer                                    - type: string                                  description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.                                  x-kubernetes-int-or-string: true                              required:                                - port                              type: object                            terminationGracePeriodSeconds:                              description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.                              format: int64                              type: integer                            timeoutSeconds:                              description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'                              format: int32                              type: integer                          type: object                      type: object                  required:                    - activeCount                  type: object                mirroring:                  description: The mirroring settings                  nullable: true                  properties:                    enabled:                      description: Enabled whether this filesystem is mirrored or not                      type: boolean                    peers:                      description: Peers represents the peers spec                      nullable: true                      properties:                        secretNames:                          description: SecretNames represents the Kubernetes Secret names to add rbd-mirror or cephfs-mirror peers                          items:                            type: string                          type: array                      type: object                    snapshotRetention:                      description: Retention is the retention policy for a snapshot schedule One path has exactly one retention policy. A policy can however contain multiple count-time period pairs in order to specify complex retention policies                      items:                        description: SnapshotScheduleRetentionSpec is a retention policy                        properties:                          duration:                            description: Duration represents the retention duration for a snapshot                            type: string                          path:                            description: Path is the path to snapshot                            type: string                        type: object                      type: array                    snapshotSchedules:                      description: SnapshotSchedules is the scheduling of snapshot for mirrored filesystems                      items:                        description: SnapshotScheduleSpec represents the snapshot scheduling settings of a mirrored pool                        properties:                          interval:                            description: Interval represent the periodicity of the snapshot.                            type: string                          path:                            description: Path is the path to snapshot, only valid for CephFS                            type: string                          startTime:                            description: StartTime indicates when to start the snapshot                            type: string                        type: object                      type: array                  type: object                preserveFilesystemOnDelete:                  description: Preserve the fs in the cluster on CephFilesystem CR deletion. Setting this to true automatically implies PreservePoolsOnDelete is true.                  type: boolean                preservePoolsOnDelete:                  description: Preserve pools on filesystem deletion                  type: boolean                statusCheck:                  description: The mirroring statusCheck                  properties:                    mirror:                      description: HealthCheckSpec represents the health check of an object store bucket                      nullable: true                      properties:                        disabled:                          type: boolean                        interval:                          description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds                          type: string                        timeout:                          type: string                      type: object                  type: object                  x-kubernetes-preserve-unknown-fields: true              required:                - dataPools                - metadataPool                - metadataServer              type: object            status:              description: CephFilesystemStatus represents the status of a Ceph Filesystem              properties:                conditions:                  items:                    description: Condition represents a status condition on any Rook-Ceph Custom Resource.                    properties:                      lastHeartbeatTime:                        format: date-time                        type: string                      lastTransitionTime:                        format: date-time                        type: string                      message:                        type: string                      reason:                        description: ConditionReason is a reason for a condition                        type: string                      status:                        type: string                      type:                        description: ConditionType represent a resource's status                        type: string                    type: object                  type: array                info:                  additionalProperties:                    type: string                  description: Use only info and put mirroringStatus in it?                  nullable: true                  type: object                mirroringStatus:                  description: MirroringStatus is the filesystem mirroring status                  properties:                    daemonsStatus:                      description: PoolMirroringStatus is the mirroring status of a filesystem                      items:                        description: FilesystemMirrorInfoSpec is the filesystem mirror status of a given filesystem                        properties:                          daemon_id:                            description: DaemonID is the cephfs-mirror name                            type: integer                          filesystems:                            description: Filesystems is the list of filesystems managed by a given cephfs-mirror daemon                            items:                              description: FilesystemsSpec is spec for the mirrored filesystem                              properties:                                directory_count:                                  description: DirectoryCount is the number of directories in the filesystem                                  type: integer                                filesystem_id:                                  description: FilesystemID is the filesystem identifier                                  type: integer                                name:                                  description: Name is name of the filesystem                                  type: string                                peers:                                  description: Peers represents the mirroring peers                                  items:                                    description: FilesystemMirrorInfoPeerSpec is the specification of a filesystem peer mirror                                    properties:                                      remote:                                        description: Remote are the remote cluster information                                        properties:                                          client_name:                                            description: ClientName is cephx name                                            type: string                                          cluster_name:                                            description: ClusterName is the name of the cluster                                            type: string                                          fs_name:                                            description: FsName is the filesystem name                                            type: string                                        type: object                                      stats:                                        description: Stats are the stat a peer mirror                                        properties:                                          failure_count:                                            description: FailureCount is the number of mirroring failure                                            type: integer                                          recovery_count:                                            description: RecoveryCount is the number of recovery attempted after failures                                            type: integer                                        type: object                                      uuid:                                        description: UUID is the peer unique identifier                                        type: string                                    type: object                                  type: array                              type: object                            type: array                        type: object                      nullable: true                      type: array                    details:                      description: Details contains potential status errors                      type: string                    lastChanged:                      description: LastChanged is the last time time the status last changed                      type: string                    lastChecked:                      description: LastChecked is the last time time the status was checked                      type: string                  type: object                observedGeneration:                  description: ObservedGeneration is the latest generation observed by the controller.                  format: int64                  type: integer                phase:                  description: ConditionType represent a resource's status                  type: string                snapshotScheduleStatus:                  description: FilesystemSnapshotScheduleStatusSpec is the status of the snapshot schedule                  properties:                    details:                      description: Details contains potential status errors                      type: string                    lastChanged:                      description: LastChanged is the last time time the status last changed                      type: string                    lastChecked:                      description: LastChecked is the last time time the status was checked                      type: string                    snapshotSchedules:                      description: SnapshotSchedules is the list of snapshots scheduled                      items:                        description: FilesystemSnapshotSchedulesSpec is the list of snapshot scheduled for images in a pool                        properties:                          fs:                            description: Fs is the name of the Ceph Filesystem                            type: string                          path:                            description: Path is the path on the filesystem                            type: string                          rel_path:                            type: string                          retention:                            description: FilesystemSnapshotScheduleStatusRetention is the retention specification for a filesystem snapshot schedule                            properties:                              active:                                description: Active is whether the scheduled is active or not                                type: boolean                              created:                                description: Created is when the snapshot schedule was created                                type: string                              created_count:                                description: CreatedCount is total amount of snapshots                                type: integer                              first:                                description: First is when the first snapshot schedule was taken                                type: string                              last:                                description: Last is when the last snapshot schedule was taken                                type: string                              last_pruned:                                description: LastPruned is when the last snapshot schedule was pruned                                type: string                              pruned_count:                                description: PrunedCount is total amount of pruned snapshots                                type: integer                              start:                                description: Start is when the snapshot schedule starts                                type: string                            type: object                          schedule:                            type: string                          subvol:                            description: Subvol is the name of the sub volume                            type: string                        type: object                      nullable: true                      type: array                  type: object              type: object              x-kubernetes-preserve-unknown-fields: true          required:            - metadata            - spec          type: object      served: true      storage: true      subresources:        status: {}---# Source: rook-ceph/templates/resources.yamlapiVersion: apiextensions.k8s.io/v1kind: CustomResourceDefinitionmetadata:  annotations:    controller-gen.kubebuilder.io/version: v0.11.3    helm.sh/resource-policy: keep  creationTimestamp: null  name: cephfilesystemsubvolumegroups.ceph.rook.iospec:  group: ceph.rook.io  names:    kind: CephFilesystemSubVolumeGroup    listKind: CephFilesystemSubVolumeGroupList    plural: cephfilesystemsubvolumegroups    singular: cephfilesystemsubvolumegroup  scope: Namespaced  versions:    - additionalPrinterColumns:        - jsonPath: .status.phase          name: Phase          type: string      name: v1      schema:        openAPIV3Schema:          description: CephFilesystemSubVolumeGroup represents a Ceph Filesystem SubVolumeGroup          properties:            apiVersion:              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'              type: string            kind:              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'              type: string            metadata:              type: object            spec:              description: Spec represents the specification of a Ceph Filesystem SubVolumeGroup              properties:                filesystemName:                  description: FilesystemName is the name of Ceph Filesystem SubVolumeGroup volume name. Typically it's the name of the CephFilesystem CR. If not coming from the CephFilesystem CR, it can be retrieved from the list of Ceph Filesystem volumes with `ceph fs volume ls`. To learn more about Ceph Filesystem abstractions see https://docs.ceph.com/en/latest/cephfs/fs-volumes/#fs-volumes-and-subvolumes                  type: string              required:                - filesystemName              type: object            status:              description: Status represents the status of a CephFilesystem SubvolumeGroup              properties:                info:                  additionalProperties:                    type: string                  nullable: true                  type: object                observedGeneration:                  description: ObservedGeneration is the latest generation observed by the controller.                  format: int64                  type: integer                phase:                  description: ConditionType represent a resource's status                  type: string              type: object              x-kubernetes-preserve-unknown-fields: true          required:            - metadata            - spec          type: object      served: true      storage: true      subresources:        status: {}---# Source: rook-ceph/templates/resources.yamlapiVersion: apiextensions.k8s.io/v1kind: CustomResourceDefinitionmetadata:  annotations:    controller-gen.kubebuilder.io/version: v0.11.3    helm.sh/resource-policy: keep  creationTimestamp: null  name: cephnfses.ceph.rook.iospec:  group: ceph.rook.io  names:    kind: CephNFS    listKind: CephNFSList    plural: cephnfses    shortNames:      - nfs    singular: cephnfs  scope: Namespaced  versions:    - name: v1      schema:        openAPIV3Schema:          description: CephNFS represents a Ceph NFS          properties:            apiVersion:              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'              type: string            kind:              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'              type: string            metadata:              type: object            spec:              description: NFSGaneshaSpec represents the spec of an nfs ganesha server              properties:                rados:                  description: RADOS is the Ganesha RADOS specification                  nullable: true                  properties:                    namespace:                      description: The namespace inside the Ceph pool (set by 'pool') where shared NFS-Ganesha config is stored. This setting is required for Ceph v15 and ignored for Ceph v16. As of Ceph Pacific v16+, this is internally set to the name of the CephNFS.                      type: string                    pool:                      description: The Ceph pool used store the shared configuration for NFS-Ganesha daemons. This setting is required for Ceph v15 and ignored for Ceph v16. As of Ceph Pacific 16.2.7+, this is internally hardcoded to ".nfs".                      type: string                  type: object                security:                  description: Security allows specifying security configurations for the NFS cluster                  nullable: true                  properties:                    kerberos:                      description: Kerberos configures NFS-Ganesha to secure NFS client connections with Kerberos.                      nullable: true                      properties:                        configFiles:                          description: "ConfigFiles defines where the Kerberos configuration should be sourced from. Config files will be placed into the `/etc/krb5.conf.rook/` directory. \n If this is left empty, Rook will not add any files. This allows you to manage the files yourself however you wish. For example, you may build them into your custom Ceph container image or use the Vault agent injector to securely add the files via annotations on the CephNFS spec (passed to the NFS server pods). \n Rook configures Kerberos to log to stderr. We suggest removing logging sections from config files to avoid consuming unnecessary disk space from logging to files."                          properties:                            volumeSource:                              description: VolumeSource accepts a pared down version of the standard Kubernetes VolumeSource for Kerberos configuration files like what is normally used to configure Volumes for a Pod. For example, a ConfigMap, Secret, or HostPath. The volume may contain multiple files, all of which will be loaded.                              properties:                                configMap:                                  description: configMap represents a configMap that should populate this volume                                  properties:                                    defaultMode:                                      description: 'defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                      format: int32                                      type: integer                                    items:                                      description: items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.                                      items:                                        description: Maps a string key to a path within a volume.                                        properties:                                          key:                                            description: key is the key to project.                                            type: string                                          mode:                                            description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                            format: int32                                            type: integer                                          path:                                            description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.                                            type: string                                        required:                                          - key                                          - path                                        type: object                                      type: array                                    name:                                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'                                      type: string                                    optional:                                      description: optional specify whether the ConfigMap or its keys must be defined                                      type: boolean                                  type: object                                  x-kubernetes-map-type: atomic                                emptyDir:                                  description: 'emptyDir represents a temporary directory that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'                                  properties:                                    medium:                                      description: 'medium represents what type of storage medium should back this directory. The default is "" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'                                      type: string                                    sizeLimit:                                      anyOf:                                        - type: integer                                        - type: string                                      description: 'sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                      x-kubernetes-int-or-string: true                                  type: object                                hostPath:                                  description: 'hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath ---'                                  properties:                                    path:                                      description: 'path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'                                      type: string                                    type:                                      description: 'type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'                                      type: string                                  required:                                    - path                                  type: object                                persistentVolumeClaim:                                  description: 'persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'                                  properties:                                    claimName:                                      description: 'claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'                                      type: string                                    readOnly:                                      description: readOnly Will force the ReadOnly setting in VolumeMounts. Default false.                                      type: boolean                                  required:                                    - claimName                                  type: object                                projected:                                  description: projected items for all in one resources secrets, configmaps, and downward API                                  properties:                                    defaultMode:                                      description: defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.                                      format: int32                                      type: integer                                    sources:                                      description: sources is the list of volume projections                                      items:                                        description: Projection that may be projected along with other supported volume types                                        properties:                                          configMap:                                            description: configMap information about the configMap data to project                                            properties:                                              items:                                                description: items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.                                                items:                                                  description: Maps a string key to a path within a volume.                                                  properties:                                                    key:                                                      description: key is the key to project.                                                      type: string                                                    mode:                                                      description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                                      format: int32                                                      type: integer                                                    path:                                                      description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.                                                      type: string                                                  required:                                                    - key                                                    - path                                                  type: object                                                type: array                                              name:                                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'                                                type: string                                              optional:                                                description: optional specify whether the ConfigMap or its keys must be defined                                                type: boolean                                            type: object                                            x-kubernetes-map-type: atomic                                          downwardAPI:                                            description: downwardAPI information about the downwardAPI data to project                                            properties:                                              items:                                                description: Items is a list of DownwardAPIVolume file                                                items:                                                  description: DownwardAPIVolumeFile represents information to create the file containing the pod field                                                  properties:                                                    fieldRef:                                                      description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.'                                                      properties:                                                        apiVersion:                                                          description: Version of the schema the FieldPath is written in terms of, defaults to "v1".                                                          type: string                                                        fieldPath:                                                          description: Path of the field to select in the specified API version.                                                          type: string                                                      required:                                                        - fieldPath                                                      type: object                                                      x-kubernetes-map-type: atomic                                                    mode:                                                      description: 'Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                                      format: int32                                                      type: integer                                                    path:                                                      description: 'Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..'''                                                      type: string                                                    resourceFieldRef:                                                      description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.'                                                      properties:                                                        containerName:                                                          description: 'Container name: required for volumes, optional for env vars'                                                          type: string                                                        divisor:                                                          anyOf:                                                            - type: integer                                                            - type: string                                                          description: Specifies the output format of the exposed resources, defaults to "1"                                                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                                          x-kubernetes-int-or-string: true                                                        resource:                                                          description: 'Required: resource to select'                                                          type: string                                                      required:                                                        - resource                                                      type: object                                                      x-kubernetes-map-type: atomic                                                  required:                                                    - path                                                  type: object                                                type: array                                            type: object                                          secret:                                            description: secret information about the secret data to project                                            properties:                                              items:                                                description: items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.                                                items:                                                  description: Maps a string key to a path within a volume.                                                  properties:                                                    key:                                                      description: key is the key to project.                                                      type: string                                                    mode:                                                      description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                                      format: int32                                                      type: integer                                                    path:                                                      description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.                                                      type: string                                                  required:                                                    - key                                                    - path                                                  type: object                                                type: array                                              name:                                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'                                                type: string                                              optional:                                                description: optional field specify whether the Secret or its key must be defined                                                type: boolean                                            type: object                                            x-kubernetes-map-type: atomic                                          serviceAccountToken:                                            description: serviceAccountToken is information about the serviceAccountToken data to project                                            properties:                                              audience:                                                description: audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.                                                type: string                                              expirationSeconds:                                                description: expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.                                                format: int64                                                type: integer                                              path:                                                description: path is the path relative to the mount point of the file to project the token into.                                                type: string                                            required:                                              - path                                            type: object                                        type: object                                      type: array                                  type: object                                secret:                                  description: 'secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'                                  properties:                                    defaultMode:                                      description: 'defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                      format: int32                                      type: integer                                    items:                                      description: items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.                                      items:                                        description: Maps a string key to a path within a volume.                                        properties:                                          key:                                            description: key is the key to project.                                            type: string                                          mode:                                            description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                            format: int32                                            type: integer                                          path:                                            description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.                                            type: string                                        required:                                          - key                                          - path                                        type: object                                      type: array                                    optional:                                      description: optional field specify whether the Secret or its keys must be defined                                      type: boolean                                    secretName:                                      description: 'secretName is the name of the secret in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'                                      type: string                                  type: object                              type: object                          type: object                        domainName:                          description: DomainName should be set to the Kerberos Realm.                          type: string                        keytabFile:                          description: KeytabFile defines where the Kerberos keytab should be sourced from. The keytab file will be placed into `/etc/krb5.keytab`. If this is left empty, Rook will not add the file. This allows you to manage the `krb5.keytab` file yourself however you wish. For example, you may build it into your custom Ceph container image or use the Vault agent injector to securely add the file via annotations on the CephNFS spec (passed to the NFS server pods).                          properties:                            volumeSource:                              description: 'VolumeSource accepts a pared down version of the standard Kubernetes VolumeSource for the Kerberos keytab file like what is normally used to configure Volumes for a Pod. For example, a Secret or HostPath. There are two requirements for the source''s content: 1. The config file must be mountable via `subPath: krb5.keytab`. For example, in a Secret, the data item must be named `krb5.keytab`, or `items` must be defined to select the key and give it path `krb5.keytab`. A HostPath directory must have the `krb5.keytab` file. 2. The volume or config file must have mode 0600.'                              properties:                                configMap:                                  description: configMap represents a configMap that should populate this volume                                  properties:                                    defaultMode:                                      description: 'defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                      format: int32                                      type: integer                                    items:                                      description: items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.                                      items:                                        description: Maps a string key to a path within a volume.                                        properties:                                          key:                                            description: key is the key to project.                                            type: string                                          mode:                                            description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                            format: int32                                            type: integer                                          path:                                            description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.                                            type: string                                        required:                                          - key                                          - path                                        type: object                                      type: array                                    name:                                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'                                      type: string                                    optional:                                      description: optional specify whether the ConfigMap or its keys must be defined                                      type: boolean                                  type: object                                  x-kubernetes-map-type: atomic                                emptyDir:                                  description: 'emptyDir represents a temporary directory that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'                                  properties:                                    medium:                                      description: 'medium represents what type of storage medium should back this directory. The default is "" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'                                      type: string                                    sizeLimit:                                      anyOf:                                        - type: integer                                        - type: string                                      description: 'sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                      x-kubernetes-int-or-string: true                                  type: object                                hostPath:                                  description: 'hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath ---'                                  properties:                                    path:                                      description: 'path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'                                      type: string                                    type:                                      description: 'type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'                                      type: string                                  required:                                    - path                                  type: object                                persistentVolumeClaim:                                  description: 'persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'                                  properties:                                    claimName:                                      description: 'claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'                                      type: string                                    readOnly:                                      description: readOnly Will force the ReadOnly setting in VolumeMounts. Default false.                                      type: boolean                                  required:                                    - claimName                                  type: object                                projected:                                  description: projected items for all in one resources secrets, configmaps, and downward API                                  properties:                                    defaultMode:                                      description: defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.                                      format: int32                                      type: integer                                    sources:                                      description: sources is the list of volume projections                                      items:                                        description: Projection that may be projected along with other supported volume types                                        properties:                                          configMap:                                            description: configMap information about the configMap data to project                                            properties:                                              items:                                                description: items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.                                                items:                                                  description: Maps a string key to a path within a volume.                                                  properties:                                                    key:                                                      description: key is the key to project.                                                      type: string                                                    mode:                                                      description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                                      format: int32                                                      type: integer                                                    path:                                                      description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.                                                      type: string                                                  required:                                                    - key                                                    - path                                                  type: object                                                type: array                                              name:                                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'                                                type: string                                              optional:                                                description: optional specify whether the ConfigMap or its keys must be defined                                                type: boolean                                            type: object                                            x-kubernetes-map-type: atomic                                          downwardAPI:                                            description: downwardAPI information about the downwardAPI data to project                                            properties:                                              items:                                                description: Items is a list of DownwardAPIVolume file                                                items:                                                  description: DownwardAPIVolumeFile represents information to create the file containing the pod field                                                  properties:                                                    fieldRef:                                                      description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.'                                                      properties:                                                        apiVersion:                                                          description: Version of the schema the FieldPath is written in terms of, defaults to "v1".                                                          type: string                                                        fieldPath:                                                          description: Path of the field to select in the specified API version.                                                          type: string                                                      required:                                                        - fieldPath                                                      type: object                                                      x-kubernetes-map-type: atomic                                                    mode:                                                      description: 'Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                                      format: int32                                                      type: integer                                                    path:                                                      description: 'Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..'''                                                      type: string                                                    resourceFieldRef:                                                      description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.'                                                      properties:                                                        containerName:                                                          description: 'Container name: required for volumes, optional for env vars'                                                          type: string                                                        divisor:                                                          anyOf:                                                            - type: integer                                                            - type: string                                                          description: Specifies the output format of the exposed resources, defaults to "1"                                                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                                          x-kubernetes-int-or-string: true                                                        resource:                                                          description: 'Required: resource to select'                                                          type: string                                                      required:                                                        - resource                                                      type: object                                                      x-kubernetes-map-type: atomic                                                  required:                                                    - path                                                  type: object                                                type: array                                            type: object                                          secret:                                            description: secret information about the secret data to project                                            properties:                                              items:                                                description: items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.                                                items:                                                  description: Maps a string key to a path within a volume.                                                  properties:                                                    key:                                                      description: key is the key to project.                                                      type: string                                                    mode:                                                      description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                                      format: int32                                                      type: integer                                                    path:                                                      description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.                                                      type: string                                                  required:                                                    - key                                                    - path                                                  type: object                                                type: array                                              name:                                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'                                                type: string                                              optional:                                                description: optional field specify whether the Secret or its key must be defined                                                type: boolean                                            type: object                                            x-kubernetes-map-type: atomic                                          serviceAccountToken:                                            description: serviceAccountToken is information about the serviceAccountToken data to project                                            properties:                                              audience:                                                description: audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.                                                type: string                                              expirationSeconds:                                                description: expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.                                                format: int64                                                type: integer                                              path:                                                description: path is the path relative to the mount point of the file to project the token into.                                                type: string                                            required:                                              - path                                            type: object                                        type: object                                      type: array                                  type: object                                secret:                                  description: 'secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'                                  properties:                                    defaultMode:                                      description: 'defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                      format: int32                                      type: integer                                    items:                                      description: items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.                                      items:                                        description: Maps a string key to a path within a volume.                                        properties:                                          key:                                            description: key is the key to project.                                            type: string                                          mode:                                            description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                            format: int32                                            type: integer                                          path:                                            description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.                                            type: string                                        required:                                          - key                                          - path                                        type: object                                      type: array                                    optional:                                      description: optional field specify whether the Secret or its keys must be defined                                      type: boolean                                    secretName:                                      description: 'secretName is the name of the secret in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'                                      type: string                                  type: object                              type: object                          type: object                        principalName:                          default: nfs                          description: 'PrincipalName corresponds directly to NFS-Ganesha''s NFS_KRB5:PrincipalName config. In practice, this is the service prefix of the principal name. The default is "nfs". This value is combined with (a) the namespace and name of the CephNFS (with a hyphen between) and (b) the Realm configured in the user-provided krb5.conf to determine the full principal name: <principalName>/<namespace>-<name>@<realm>. e.g., nfs/rook-ceph-my-nfs@example.net. See https://github.com/nfs-ganesha/nfs-ganesha/wiki/RPCSEC_GSS for more detail.'                          type: string                      type: object                    sssd:                      description: SSSD enables integration with System Security Services Daemon (SSSD). SSSD can be used to provide user ID mapping from a number of sources. See https://sssd.io for more information about the SSSD project.                      nullable: true                      properties:                        sidecar:                          description: Sidecar tells Rook to run SSSD in a sidecar alongside the NFS-Ganesha server in each NFS pod.                          properties:                            additionalFiles:                              description: AdditionalFiles defines any number of additional files that should be mounted into the SSSD sidecar. These files may be referenced by the sssd.conf config file.                              items:                                description: SSSDSidecarAdditionalFile represents the source from where additional files for the the SSSD configuration should come from and are made available.                                properties:                                  subPath:                                    description: SubPath defines the sub-path in `/etc/sssd/rook-additional/` where the additional file(s) will be placed. Each subPath definition must be unique and must not contain ':'.                                    minLength: 1                                    pattern: ^[^:]+$                                    type: string                                  volumeSource:                                    description: VolumeSource accepts a pared down version of the standard Kubernetes VolumeSource for the additional file(s) like what is normally used to configure Volumes for a Pod. Fore example, a ConfigMap, Secret, or HostPath. Each VolumeSource adds one or more additional files to the SSSD sidecar container in the `/etc/sssd/rook-additional/<subPath>` directory. Be aware that some files may need to have a specific file mode like 0600 due to requirements by SSSD for some files. For example, CA or TLS certificates.                                    properties:                                      configMap:                                        description: configMap represents a configMap that should populate this volume                                        properties:                                          defaultMode:                                            description: 'defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                            format: int32                                            type: integer                                          items:                                            description: items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.                                            items:                                              description: Maps a string key to a path within a volume.                                              properties:                                                key:                                                  description: key is the key to project.                                                  type: string                                                mode:                                                  description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                                  format: int32                                                  type: integer                                                path:                                                  description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.                                                  type: string                                              required:                                                - key                                                - path                                              type: object                                            type: array                                          name:                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'                                            type: string                                          optional:                                            description: optional specify whether the ConfigMap or its keys must be defined                                            type: boolean                                        type: object                                        x-kubernetes-map-type: atomic                                      emptyDir:                                        description: 'emptyDir represents a temporary directory that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'                                        properties:                                          medium:                                            description: 'medium represents what type of storage medium should back this directory. The default is "" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'                                            type: string                                          sizeLimit:                                            anyOf:                                              - type: integer                                              - type: string                                            description: 'sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'                                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                            x-kubernetes-int-or-string: true                                        type: object                                      hostPath:                                        description: 'hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath ---'                                        properties:                                          path:                                            description: 'path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'                                            type: string                                          type:                                            description: 'type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'                                            type: string                                        required:                                          - path                                        type: object                                      persistentVolumeClaim:                                        description: 'persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'                                        properties:                                          claimName:                                            description: 'claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'                                            type: string                                          readOnly:                                            description: readOnly Will force the ReadOnly setting in VolumeMounts. Default false.                                            type: boolean                                        required:                                          - claimName                                        type: object                                      projected:                                        description: projected items for all in one resources secrets, configmaps, and downward API                                        properties:                                          defaultMode:                                            description: defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.                                            format: int32                                            type: integer                                          sources:                                            description: sources is the list of volume projections                                            items:                                              description: Projection that may be projected along with other supported volume types                                              properties:                                                configMap:                                                  description: configMap information about the configMap data to project                                                  properties:                                                    items:                                                      description: items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.                                                      items:                                                        description: Maps a string key to a path within a volume.                                                        properties:                                                          key:                                                            description: key is the key to project.                                                            type: string                                                          mode:                                                            description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                                            format: int32                                                            type: integer                                                          path:                                                            description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.                                                            type: string                                                        required:                                                          - key                                                          - path                                                        type: object                                                      type: array                                                    name:                                                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'                                                      type: string                                                    optional:                                                      description: optional specify whether the ConfigMap or its keys must be defined                                                      type: boolean                                                  type: object                                                  x-kubernetes-map-type: atomic                                                downwardAPI:                                                  description: downwardAPI information about the downwardAPI data to project                                                  properties:                                                    items:                                                      description: Items is a list of DownwardAPIVolume file                                                      items:                                                        description: DownwardAPIVolumeFile represents information to create the file containing the pod field                                                        properties:                                                          fieldRef:                                                            description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.'                                                            properties:                                                              apiVersion:                                                                description: Version of the schema the FieldPath is written in terms of, defaults to "v1".                                                                type: string                                                              fieldPath:                                                                description: Path of the field to select in the specified API version.                                                                type: string                                                            required:                                                              - fieldPath                                                            type: object                                                            x-kubernetes-map-type: atomic                                                          mode:                                                            description: 'Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                                            format: int32                                                            type: integer                                                          path:                                                            description: 'Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..'''                                                            type: string                                                          resourceFieldRef:                                                            description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.'                                                            properties:                                                              containerName:                                                                description: 'Container name: required for volumes, optional for env vars'                                                                type: string                                                              divisor:                                                                anyOf:                                                                  - type: integer                                                                  - type: string                                                                description: Specifies the output format of the exposed resources, defaults to "1"                                                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                                                x-kubernetes-int-or-string: true                                                              resource:                                                                description: 'Required: resource to select'                                                                type: string                                                            required:                                                              - resource                                                            type: object                                                            x-kubernetes-map-type: atomic                                                        required:                                                          - path                                                        type: object                                                      type: array                                                  type: object                                                secret:                                                  description: secret information about the secret data to project                                                  properties:                                                    items:                                                      description: items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.                                                      items:                                                        description: Maps a string key to a path within a volume.                                                        properties:                                                          key:                                                            description: key is the key to project.                                                            type: string                                                          mode:                                                            description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                                            format: int32                                                            type: integer                                                          path:                                                            description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.                                                            type: string                                                        required:                                                          - key                                                          - path                                                        type: object                                                      type: array                                                    name:                                                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'                                                      type: string                                                    optional:                                                      description: optional field specify whether the Secret or its key must be defined                                                      type: boolean                                                  type: object                                                  x-kubernetes-map-type: atomic                                                serviceAccountToken:                                                  description: serviceAccountToken is information about the serviceAccountToken data to project                                                  properties:                                                    audience:                                                      description: audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.                                                      type: string                                                    expirationSeconds:                                                      description: expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.                                                      format: int64                                                      type: integer                                                    path:                                                      description: path is the path relative to the mount point of the file to project the token into.                                                      type: string                                                  required:                                                    - path                                                  type: object                                              type: object                                            type: array                                        type: object                                      secret:                                        description: 'secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'                                        properties:                                          defaultMode:                                            description: 'defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                            format: int32                                            type: integer                                          items:                                            description: items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.                                            items:                                              description: Maps a string key to a path within a volume.                                              properties:                                                key:                                                  description: key is the key to project.                                                  type: string                                                mode:                                                  description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                                  format: int32                                                  type: integer                                                path:                                                  description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.                                                  type: string                                              required:                                                - key                                                - path                                              type: object                                            type: array                                          optional:                                            description: optional field specify whether the Secret or its keys must be defined                                            type: boolean                                          secretName:                                            description: 'secretName is the name of the secret in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'                                            type: string                                        type: object                                    type: object                                required:                                  - subPath                                  - volumeSource                                type: object                              type: array                            debugLevel:                              description: 'DebugLevel sets the debug level for SSSD. If unset or set to 0, Rook does nothing. Otherwise, this may be a value between 1 and 10. See SSSD docs for more info: https://sssd.io/troubleshooting/basics.html#sssd-debug-logs'                              maximum: 10                              minimum: 0                              type: integer                            image:                              description: Image defines the container image that should be used for the SSSD sidecar.                              minLength: 1                              type: string                            resources:                              description: Resources allow specifying resource requests/limits on the SSSD sidecar container.                              properties:                                claims:                                  description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers."                                  items:                                    description: ResourceClaim references one entry in PodSpec.ResourceClaims.                                    properties:                                      name:                                        description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.                                        type: string                                    required:                                      - name                                    type: object                                  type: array                                  x-kubernetes-list-map-keys:                                    - name                                  x-kubernetes-list-type: map                                limits:                                  additionalProperties:                                    anyOf:                                      - type: integer                                      - type: string                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                    x-kubernetes-int-or-string: true                                  description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                                  type: object                                requests:                                  additionalProperties:                                    anyOf:                                      - type: integer                                      - type: string                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                    x-kubernetes-int-or-string: true                                  description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                                  type: object                              type: object                            sssdConfigFile:                              description: SSSDConfigFile defines where the SSSD configuration should be sourced from. The config file will be placed into `/etc/sssd/sssd.conf`. If this is left empty, Rook will not add the file. This allows you to manage the `sssd.conf` file yourself however you wish. For example, you may build it into your custom Ceph container image or use the Vault agent injector to securely add the file via annotations on the CephNFS spec (passed to the NFS server pods).                              properties:                                volumeSource:                                  description: 'VolumeSource accepts a pared down version of the standard Kubernetes VolumeSource for the SSSD configuration file like what is normally used to configure Volumes for a Pod. For example, a ConfigMap, Secret, or HostPath. There are two requirements for the source''s content: 1. The config file must be mountable via `subPath: sssd.conf`. For example, in a ConfigMap, the data item must be named `sssd.conf`, or `items` must be defined to select the key and give it path `sssd.conf`. A HostPath directory must have the `sssd.conf` file. 2. The volume or config file must have mode 0600.'                                  properties:                                    configMap:                                      description: configMap represents a configMap that should populate this volume                                      properties:                                        defaultMode:                                          description: 'defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                          format: int32                                          type: integer                                        items:                                          description: items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.                                          items:                                            description: Maps a string key to a path within a volume.                                            properties:                                              key:                                                description: key is the key to project.                                                type: string                                              mode:                                                description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                                format: int32                                                type: integer                                              path:                                                description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.                                                type: string                                            required:                                              - key                                              - path                                            type: object                                          type: array                                        name:                                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'                                          type: string                                        optional:                                          description: optional specify whether the ConfigMap or its keys must be defined                                          type: boolean                                      type: object                                      x-kubernetes-map-type: atomic                                    emptyDir:                                      description: 'emptyDir represents a temporary directory that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'                                      properties:                                        medium:                                          description: 'medium represents what type of storage medium should back this directory. The default is "" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'                                          type: string                                        sizeLimit:                                          anyOf:                                            - type: integer                                            - type: string                                          description: 'sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'                                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                          x-kubernetes-int-or-string: true                                      type: object                                    hostPath:                                      description: 'hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath ---'                                      properties:                                        path:                                          description: 'path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'                                          type: string                                        type:                                          description: 'type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'                                          type: string                                      required:                                        - path                                      type: object                                    persistentVolumeClaim:                                      description: 'persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'                                      properties:                                        claimName:                                          description: 'claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'                                          type: string                                        readOnly:                                          description: readOnly Will force the ReadOnly setting in VolumeMounts. Default false.                                          type: boolean                                      required:                                        - claimName                                      type: object                                    projected:                                      description: projected items for all in one resources secrets, configmaps, and downward API                                      properties:                                        defaultMode:                                          description: defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.                                          format: int32                                          type: integer                                        sources:                                          description: sources is the list of volume projections                                          items:                                            description: Projection that may be projected along with other supported volume types                                            properties:                                              configMap:                                                description: configMap information about the configMap data to project                                                properties:                                                  items:                                                    description: items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.                                                    items:                                                      description: Maps a string key to a path within a volume.                                                      properties:                                                        key:                                                          description: key is the key to project.                                                          type: string                                                        mode:                                                          description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                                          format: int32                                                          type: integer                                                        path:                                                          description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.                                                          type: string                                                      required:                                                        - key                                                        - path                                                      type: object                                                    type: array                                                  name:                                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'                                                    type: string                                                  optional:                                                    description: optional specify whether the ConfigMap or its keys must be defined                                                    type: boolean                                                type: object                                                x-kubernetes-map-type: atomic                                              downwardAPI:                                                description: downwardAPI information about the downwardAPI data to project                                                properties:                                                  items:                                                    description: Items is a list of DownwardAPIVolume file                                                    items:                                                      description: DownwardAPIVolumeFile represents information to create the file containing the pod field                                                      properties:                                                        fieldRef:                                                          description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.'                                                          properties:                                                            apiVersion:                                                              description: Version of the schema the FieldPath is written in terms of, defaults to "v1".                                                              type: string                                                            fieldPath:                                                              description: Path of the field to select in the specified API version.                                                              type: string                                                          required:                                                            - fieldPath                                                          type: object                                                          x-kubernetes-map-type: atomic                                                        mode:                                                          description: 'Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                                          format: int32                                                          type: integer                                                        path:                                                          description: 'Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..'''                                                          type: string                                                        resourceFieldRef:                                                          description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.'                                                          properties:                                                            containerName:                                                              description: 'Container name: required for volumes, optional for env vars'                                                              type: string                                                            divisor:                                                              anyOf:                                                                - type: integer                                                                - type: string                                                              description: Specifies the output format of the exposed resources, defaults to "1"                                                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                                                              x-kubernetes-int-or-string: true                                                            resource:                                                              description: 'Required: resource to select'                                                              type: string                                                          required:                                                            - resource                                                          type: object                                                          x-kubernetes-map-type: atomic                                                      required:                                                        - path                                                      type: object                                                    type: array                                                type: object                                              secret:                                                description: secret information about the secret data to project                                                properties:                                                  items:                                                    description: items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.                                                    items:                                                      description: Maps a string key to a path within a volume.                                                      properties:                                                        key:                                                          description: key is the key to project.                                                          type: string                                                        mode:                                                          description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                                          format: int32                                                          type: integer                                                        path:                                                          description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.                                                          type: string                                                      required:                                                        - key                                                        - path                                                      type: object                                                    type: array                                                  name:                                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'                                                    type: string                                                  optional:                                                    description: optional field specify whether the Secret or its key must be defined                                                    type: boolean                                                type: object                                                x-kubernetes-map-type: atomic                                              serviceAccountToken:                                                description: serviceAccountToken is information about the serviceAccountToken data to project                                                properties:                                                  audience:                                                    description: audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.                                                    type: string                                                  expirationSeconds:                                                    description: expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.                                                    format: int64                                                    type: integer                                                  path:                                                    description: path is the path relative to the mount point of the file to project the token into.                                                    type: string                                                required:                                                  - path                                                type: object                                            type: object                                          type: array                                      type: object                                    secret:                                      description: 'secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'                                      properties:                                        defaultMode:                                          description: 'defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                          format: int32                                          type: integer                                        items:                                          description: items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.                                          items:                                            description: Maps a string key to a path within a volume.                                            properties:                                              key:                                                description: key is the key to project.                                                type: string                                              mode:                                                description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'                                                format: int32                                                type: integer                                              path:                                                description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.                                                type: string                                            required:                                              - key                                              - path                                            type: object                                          type: array                                        optional:                                          description: optional field specify whether the Secret or its keys must be defined                                          type: boolean                                        secretName:                                          description: 'secretName is the name of the secret in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'                                          type: string                                      type: object                                  type: object                              type: object                          required:                            - image                          type: object                      type: object                  type: object                server:                  description: Server is the Ganesha Server specification                  properties:                    active:                      description: The number of active Ganesha servers                      type: integer                    annotations:                      additionalProperties:                        type: string                      description: The annotations-related configuration to add/set on each Pod related object.                      nullable: true                      type: object                      x-kubernetes-preserve-unknown-fields: true                    hostNetwork:                      description: Whether host networking is enabled for the Ganesha server. If not set, the network settings from the cluster CR will be applied.                      nullable: true                      type: boolean                    labels:                      additionalProperties:                        type: string                      description: The labels-related configuration to add/set on each Pod related object.                      nullable: true                      type: object                      x-kubernetes-preserve-unknown-fields: true                    logLevel:                      description: LogLevel set logging level                      type: string                    placement:                      description: The affinity to place the ganesha pods                      nullable: true                      properties:                        nodeAffinity:                          description: NodeAffinity is a group of node affinity scheduling rules                          properties:                            preferredDuringSchedulingIgnoredDuringExecution:                              description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.                              items:                                description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).                                properties:                                  preference:                                    description: A node selector term, associated with the corresponding weight.                                    properties:                                      matchExpressions:                                        description: A list of node selector requirements by node's labels.                                        items:                                          description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: The label key that the selector applies to.                                              type: string                                            operator:                                              description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                              type: string                                            values:                                              description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchFields:                                        description: A list of node selector requirements by node's fields.                                        items:                                          description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: The label key that the selector applies to.                                              type: string                                            operator:                                              description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                              type: string                                            values:                                              description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                    type: object                                    x-kubernetes-map-type: atomic                                  weight:                                    description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.                                    format: int32                                    type: integer                                required:                                  - preference                                  - weight                                type: object                              type: array                            requiredDuringSchedulingIgnoredDuringExecution:                              description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.                              properties:                                nodeSelectorTerms:                                  description: Required. A list of node selector terms. The terms are ORed.                                  items:                                    description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.                                    properties:                                      matchExpressions:                                        description: A list of node selector requirements by node's labels.                                        items:                                          description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: The label key that the selector applies to.                                              type: string                                            operator:                                              description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                              type: string                                            values:                                              description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchFields:                                        description: A list of node selector requirements by node's fields.                                        items:                                          description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: The label key that the selector applies to.                                              type: string                                            operator:                                              description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                              type: string                                            values:                                              description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                    type: object                                    x-kubernetes-map-type: atomic                                  type: array                              required:                                - nodeSelectorTerms                              type: object                              x-kubernetes-map-type: atomic                          type: object                        podAffinity:                          description: PodAffinity is a group of inter pod affinity scheduling rules                          properties:                            preferredDuringSchedulingIgnoredDuringExecution:                              description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.                              items:                                description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)                                properties:                                  podAffinityTerm:                                    description: Required. A pod affinity term, associated with the corresponding weight.                                    properties:                                      labelSelector:                                        description: A label query over a set of resources, in this case pods.                                        properties:                                          matchExpressions:                                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                            items:                                              description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                              properties:                                                key:                                                  description: key is the label key that the selector applies to.                                                  type: string                                                operator:                                                  description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                  type: string                                                values:                                                  description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                  items:                                                    type: string                                                  type: array                                              required:                                                - key                                                - operator                                              type: object                                            type: array                                          matchLabels:                                            additionalProperties:                                              type: string                                            description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                            type: object                                        type: object                                        x-kubernetes-map-type: atomic                                      namespaceSelector:                                        description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                        properties:                                          matchExpressions:                                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                            items:                                              description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                              properties:                                                key:                                                  description: key is the label key that the selector applies to.                                                  type: string                                                operator:                                                  description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                  type: string                                                values:                                                  description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                  items:                                                    type: string                                                  type: array                                              required:                                                - key                                                - operator                                              type: object                                            type: array                                          matchLabels:                                            additionalProperties:                                              type: string                                            description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                            type: object                                        type: object                                        x-kubernetes-map-type: atomic                                      namespaces:                                        description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                        items:                                          type: string                                        type: array                                      topologyKey:                                        description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                        type: string                                    required:                                      - topologyKey                                    type: object                                  weight:                                    description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.                                    format: int32                                    type: integer                                required:                                  - podAffinityTerm                                  - weight                                type: object                              type: array                            requiredDuringSchedulingIgnoredDuringExecution:                              description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.                              items:                                description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running                                properties:                                  labelSelector:                                    description: A label query over a set of resources, in this case pods.                                    properties:                                      matchExpressions:                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                        items:                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: key is the label key that the selector applies to.                                              type: string                                            operator:                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                              type: string                                            values:                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchLabels:                                        additionalProperties:                                          type: string                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                        type: object                                    type: object                                    x-kubernetes-map-type: atomic                                  namespaceSelector:                                    description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                    properties:                                      matchExpressions:                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                        items:                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: key is the label key that the selector applies to.                                              type: string                                            operator:                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                              type: string                                            values:                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchLabels:                                        additionalProperties:                                          type: string                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                        type: object                                    type: object                                    x-kubernetes-map-type: atomic                                  namespaces:                                    description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                    items:                                      type: string                                    type: array                                  topologyKey:                                    description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                    type: string                                required:                                  - topologyKey                                type: object                              type: array                          type: object                        podAntiAffinity:                          description: PodAntiAffinity is a group of inter pod anti affinity scheduling rules                          properties:                            preferredDuringSchedulingIgnoredDuringExecution:                              description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.                              items:                                description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)                                properties:                                  podAffinityTerm:                                    description: Required. A pod affinity term, associated with the corresponding weight.                                    properties:                                      labelSelector:                                        description: A label query over a set of resources, in this case pods.                                        properties:                                          matchExpressions:                                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                            items:                                              description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                              properties:                                                key:                                                  description: key is the label key that the selector applies to.                                                  type: string                                                operator:                                                  description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                  type: string                                                values:                                                  description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                  items:                                                    type: string                                                  type: array                                              required:                                                - key                                                - operator                                              type: object                                            type: array                                          matchLabels:                                            additionalProperties:                                              type: string                                            description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                            type: object                                        type: object                                        x-kubernetes-map-type: atomic                                      namespaceSelector:                                        description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                        properties:                                          matchExpressions:                                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                            items:                                              description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                              properties:                                                key:                                                  description: key is the label key that the selector applies to.                                                  type: string                                                operator:                                                  description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                  type: string                                                values:                                                  description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                  items:                                                    type: string                                                  type: array                                              required:                                                - key                                                - operator                                              type: object                                            type: array                                          matchLabels:                                            additionalProperties:                                              type: string                                            description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                            type: object                                        type: object                                        x-kubernetes-map-type: atomic                                      namespaces:                                        description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                        items:                                          type: string                                        type: array                                      topologyKey:                                        description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                        type: string                                    required:                                      - topologyKey                                    type: object                                  weight:                                    description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.                                    format: int32                                    type: integer                                required:                                  - podAffinityTerm                                  - weight                                type: object                              type: array                            requiredDuringSchedulingIgnoredDuringExecution:                              description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.                              items:                                description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running                                properties:                                  labelSelector:                                    description: A label query over a set of resources, in this case pods.                                    properties:                                      matchExpressions:                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                        items:                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: key is the label key that the selector applies to.                                              type: string                                            operator:                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                              type: string                                            values:                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchLabels:                                        additionalProperties:                                          type: string                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                        type: object                                    type: object                                    x-kubernetes-map-type: atomic                                  namespaceSelector:                                    description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                    properties:                                      matchExpressions:                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                        items:                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: key is the label key that the selector applies to.                                              type: string                                            operator:                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                              type: string                                            values:                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchLabels:                                        additionalProperties:                                          type: string                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                        type: object                                    type: object                                    x-kubernetes-map-type: atomic                                  namespaces:                                    description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                    items:                                      type: string                                    type: array                                  topologyKey:                                    description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                    type: string                                required:                                  - topologyKey                                type: object                              type: array                          type: object                        tolerations:                          description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>                          items:                            description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.                            properties:                              effect:                                description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.                                type: string                              key:                                description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.                                type: string                              operator:                                description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.                                type: string                              tolerationSeconds:                                description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.                                format: int64                                type: integer                              value:                                description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.                                type: string                            type: object                          type: array                        topologySpreadConstraints:                          description: TopologySpreadConstraint specifies how to spread matching pods among the given topology                          items:                            description: TopologySpreadConstraint specifies how to spread matching pods among the given topology.                            properties:                              labelSelector:                                description: LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.                                properties:                                  matchExpressions:                                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                    items:                                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: key is the label key that the selector applies to.                                          type: string                                        operator:                                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                          type: string                                        values:                                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                  matchLabels:                                    additionalProperties:                                      type: string                                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                    type: object                                type: object                                x-kubernetes-map-type: atomic                              matchLabelKeys:                                description: "MatchLabelKeys is a set of pod label keys to select the pods over which spreading will be calculated. The keys are used to lookup values from the incoming pod labels, those key-value labels are ANDed with labelSelector to select the group of existing pods over which spreading will be calculated for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when LabelSelector isn't set. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector. \n This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default)."                                items:                                  type: string                                type: array                                x-kubernetes-list-type: atomic                              maxSkew:                                description: 'MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | |  P P  |  P P  |   P   | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It''s a required field. Default value is 1 and 0 is not allowed.'                                format: int32                                type: integer                              minDomains:                                description: "MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats \"global minimum\" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule. \n For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | |  P P  |  P P  |  P P  | The number of domains is less than 5(MinDomains), so \"global minimum\" is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew. \n This is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default)."                                format: int32                                type: integer                              nodeAffinityPolicy:                                description: "NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. \n If this value is nil, the behavior is equivalent to the Honor policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag."                                type: string                              nodeTaintsPolicy:                                description: "NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included. \n If this value is nil, the behavior is equivalent to the Ignore policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag."                                type: string                              topologyKey:                                description: TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each <key, value> as a "bucket", and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes meet the requirements of nodeAffinityPolicy and nodeTaintsPolicy. e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology. And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology. It's a required field.                                type: string                              whenUnsatisfiable:                                description: 'WhenUnsatisfiable indicates how to deal with a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered "Unsatisfiable" for an incoming pod if and only if every possible node assignment for that pod would violate "MaxSkew" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P |   P   |   P   | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won''t make it *more* imbalanced. It''s a required field.'                                type: string                            required:                              - maxSkew                              - topologyKey                              - whenUnsatisfiable                            type: object                          type: array                      type: object                      x-kubernetes-preserve-unknown-fields: true                    priorityClassName:                      description: PriorityClassName sets the priority class on the pods                      type: string                    resources:                      description: Resources set resource requests and limits                      nullable: true                      properties:                        claims:                          description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers."                          items:                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.                            properties:                              name:                                description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.                                type: string                            required:                              - name                            type: object                          type: array                          x-kubernetes-list-map-keys:                            - name                          x-kubernetes-list-type: map                        limits:                          additionalProperties:                            anyOf:                              - type: integer                              - type: string                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                            x-kubernetes-int-or-string: true                          description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                          type: object                        requests:                          additionalProperties:                            anyOf:                              - type: integer                              - type: string                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                            x-kubernetes-int-or-string: true                          description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                          type: object                      type: object                      x-kubernetes-preserve-unknown-fields: true                  required:                    - active                  type: object              required:                - server              type: object            status:              description: Status represents the status of an object              properties:                conditions:                  items:                    description: Condition represents a status condition on any Rook-Ceph Custom Resource.                    properties:                      lastHeartbeatTime:                        format: date-time                        type: string                      lastTransitionTime:                        format: date-time                        type: string                      message:                        type: string                      reason:                        description: ConditionReason is a reason for a condition                        type: string                      status:                        type: string                      type:                        description: ConditionType represent a resource's status                        type: string                    type: object                  type: array                observedGeneration:                  description: ObservedGeneration is the latest generation observed by the controller.                  format: int64                  type: integer                phase:                  type: string              type: object              x-kubernetes-preserve-unknown-fields: true          required:            - metadata            - spec          type: object      served: true      storage: true      subresources:        status: {}---# Source: rook-ceph/templates/resources.yamlapiVersion: apiextensions.k8s.io/v1kind: CustomResourceDefinitionmetadata:  annotations:    controller-gen.kubebuilder.io/version: v0.11.3    helm.sh/resource-policy: keep  creationTimestamp: null  name: cephobjectrealms.ceph.rook.iospec:  group: ceph.rook.io  names:    kind: CephObjectRealm    listKind: CephObjectRealmList    plural: cephobjectrealms    singular: cephobjectrealm  scope: Namespaced  versions:    - name: v1      schema:        openAPIV3Schema:          description: CephObjectRealm represents a Ceph Object Store Gateway Realm          properties:            apiVersion:              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'              type: string            kind:              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'              type: string            metadata:              type: object            spec:              description: ObjectRealmSpec represent the spec of an ObjectRealm              nullable: true              properties:                pull:                  description: PullSpec represents the pulling specification of a Ceph Object Storage Gateway Realm                  properties:                    endpoint:                      pattern: ^https*://                      type: string                  type: object              type: object            status:              description: Status represents the status of an object              properties:                conditions:                  items:                    description: Condition represents a status condition on any Rook-Ceph Custom Resource.                    properties:                      lastHeartbeatTime:                        format: date-time                        type: string                      lastTransitionTime:                        format: date-time                        type: string                      message:                        type: string                      reason:                        description: ConditionReason is a reason for a condition                        type: string                      status:                        type: string                      type:                        description: ConditionType represent a resource's status                        type: string                    type: object                  type: array                observedGeneration:                  description: ObservedGeneration is the latest generation observed by the controller.                  format: int64                  type: integer                phase:                  type: string              type: object              x-kubernetes-preserve-unknown-fields: true          required:            - metadata          type: object      served: true      storage: true      subresources:        status: {}---# Source: rook-ceph/templates/resources.yamlapiVersion: apiextensions.k8s.io/v1kind: CustomResourceDefinitionmetadata:  annotations:    controller-gen.kubebuilder.io/version: v0.11.3    helm.sh/resource-policy: keep  creationTimestamp: null  name: cephobjectstores.ceph.rook.iospec:  group: ceph.rook.io  names:    kind: CephObjectStore    listKind: CephObjectStoreList    plural: cephobjectstores    singular: cephobjectstore  scope: Namespaced  versions:    - additionalPrinterColumns:        - jsonPath: .status.phase          name: Phase          type: string      name: v1      schema:        openAPIV3Schema:          description: CephObjectStore represents a Ceph Object Store Gateway          properties:            apiVersion:              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'              type: string            kind:              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'              type: string            metadata:              type: object            spec:              description: ObjectStoreSpec represent the spec of a pool              properties:                allowUsersInNamespaces:                  description: The list of allowed namespaces in addition to the object store namespace where ceph object store users may be created. Specify "*" to allow all namespaces, otherwise list individual namespaces that are to be allowed. This is useful for applications that need object store credentials to be created in their own namespace, where neither OBCs nor COSI is being used to create buckets. The default is empty.                  items:                    type: string                  type: array                dataPool:                  description: The data pool settings                  nullable: true                  properties:                    compressionMode:                      description: 'DEPRECATED: use Parameters instead, e.g., Parameters["compression_mode"] = "force" The inline compression mode in Bluestore OSD to set to (options are: none, passive, aggressive, force) Do NOT set a default value for kubebuilder as this will override the Parameters'                      enum:                        - none                        - passive                        - aggressive                        - force                        - ""                      nullable: true                      type: string                    crushRoot:                      description: The root of the crush hierarchy utilized by the pool                      nullable: true                      type: string                    deviceClass:                      description: The device class the OSD should set to for use in the pool                      nullable: true                      type: string                    enableRBDStats:                      description: EnableRBDStats is used to enable gathering of statistics for all RBD images in the pool                      type: boolean                    erasureCoded:                      description: The erasure code settings                      properties:                        algorithm:                          description: The algorithm for erasure coding                          type: string                        codingChunks:                          description: Number of coding chunks per object in an erasure coded storage pool (required for erasure-coded pool type). This is the number of OSDs that can be lost simultaneously before data cannot be recovered.                          minimum: 0                          type: integer                        dataChunks:                          description: Number of data chunks per object in an erasure coded storage pool (required for erasure-coded pool type). The number of chunks required to recover an object when any single OSD is lost is the same as dataChunks so be aware that the larger the number of data chunks, the higher the cost of recovery.                          minimum: 0                          type: integer                      required:                        - codingChunks                        - dataChunks                      type: object                    failureDomain:                      description: 'The failure domain: osd/host/(region or zone if available) - technically also any type in the crush map'                      type: string                    mirroring:                      description: The mirroring settings                      properties:                        enabled:                          description: Enabled whether this pool is mirrored or not                          type: boolean                        mode:                          description: 'Mode is the mirroring mode: either pool or image'                          type: string                        peers:                          description: Peers represents the peers spec                          nullable: true                          properties:                            secretNames:                              description: SecretNames represents the Kubernetes Secret names to add rbd-mirror or cephfs-mirror peers                              items:                                type: string                              type: array                          type: object                        snapshotSchedules:                          description: SnapshotSchedules is the scheduling of snapshot for mirrored images/pools                          items:                            description: SnapshotScheduleSpec represents the snapshot scheduling settings of a mirrored pool                            properties:                              interval:                                description: Interval represent the periodicity of the snapshot.                                type: string                              path:                                description: Path is the path to snapshot, only valid for CephFS                                type: string                              startTime:                                description: StartTime indicates when to start the snapshot                                type: string                            type: object                          type: array                      type: object                    parameters:                      additionalProperties:                        type: string                      description: Parameters is a list of properties to enable on a given pool                      nullable: true                      type: object                      x-kubernetes-preserve-unknown-fields: true                    quotas:                      description: The quota settings                      nullable: true                      properties:                        maxBytes:                          description: MaxBytes represents the quota in bytes Deprecated in favor of MaxSize                          format: int64                          type: integer                        maxObjects:                          description: MaxObjects represents the quota in objects                          format: int64                          type: integer                        maxSize:                          description: MaxSize represents the quota in bytes as a string                          pattern: ^[0-9]+[\.]?[0-9]*([KMGTPE]i|[kMGTPE])?$                          type: string                      type: object                    replicated:                      description: The replication settings                      properties:                        hybridStorage:                          description: HybridStorage represents hybrid storage tier settings                          nullable: true                          properties:                            primaryDeviceClass:                              description: PrimaryDeviceClass represents high performance tier (for example SSD or NVME) for Primary OSD                              minLength: 1                              type: string                            secondaryDeviceClass:                              description: SecondaryDeviceClass represents low performance tier (for example HDDs) for remaining OSDs                              minLength: 1                              type: string                          required:                            - primaryDeviceClass                            - secondaryDeviceClass                          type: object                        replicasPerFailureDomain:                          description: ReplicasPerFailureDomain the number of replica in the specified failure domain                          minimum: 1                          type: integer                        requireSafeReplicaSize:                          description: RequireSafeReplicaSize if false allows you to set replica 1                          type: boolean                        size:                          description: Size - Number of copies per object in a replicated storage pool, including the object itself (required for replicated pool type)                          minimum: 0                          type: integer                        subFailureDomain:                          description: SubFailureDomain the name of the sub-failure domain                          type: string                        targetSizeRatio:                          description: TargetSizeRatio gives a hint (%) to Ceph in terms of expected consumption of the total cluster capacity                          type: number                      required:                        - size                      type: object                    statusCheck:                      description: The mirroring statusCheck                      properties:                        mirror:                          description: HealthCheckSpec represents the health check of an object store bucket                          nullable: true                          properties:                            disabled:                              type: boolean                            interval:                              description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds                              type: string                            timeout:                              type: string                          type: object                      type: object                      x-kubernetes-preserve-unknown-fields: true                  type: object                gateway:                  description: The rgw pod info                  nullable: true                  properties:                    annotations:                      additionalProperties:                        type: string                      description: The annotations-related configuration to add/set on each Pod related object.                      nullable: true                      type: object                      x-kubernetes-preserve-unknown-fields: true                    caBundleRef:                      description: The name of the secret that stores custom ca-bundle with root and intermediate certificates.                      nullable: true                      type: string                    dashboardEnabled:                      description: Whether rgw dashboard is enabled for the rgw daemon. If not set, the rgw dashboard will be enabled.                      nullable: true                      type: boolean                      x-kubernetes-preserve-unknown-fields: true                    disableMultisiteSyncTraffic:                      description: 'DisableMultisiteSyncTraffic, when true, prevents this object store''s gateways from transmitting multisite replication data. Note that this value does not affect whether gateways receive multisite replication traffic: see ObjectZone.spec.customEndpoints for that. If false or unset, this object store''s gateways will be able to transmit multisite replication data.'                      type: boolean                    externalRgwEndpoints:                      description: ExternalRgwEndpoints points to external RGW endpoint(s). Multiple endpoints can be given, but for stability of ObjectBucketClaims, we highly recommend that users give only a single external RGW endpoint that is a load balancer that sends requests to the multiple RGWs.                      items:                        description: EndpointAddress is a tuple that describes a single IP address or host name. This is a subset of Kubernetes's v1.EndpointAddress.                        properties:                          hostname:                            description: The DNS-addressable Hostname of this endpoint. This field will be preferred over IP if both are given.                            type: string                          ip:                            description: The IP of this endpoint. As a legacy behavior, this supports being given a DNS-adressable hostname as well.                            type: string                        type: object                        x-kubernetes-map-type: atomic                      nullable: true                      type: array                    hostNetwork:                      description: Whether host networking is enabled for the rgw daemon. If not set, the network settings from the cluster CR will be applied.                      nullable: true                      type: boolean                      x-kubernetes-preserve-unknown-fields: true                    instances:                      description: The number of pods in the rgw replicaset.                      format: int32                      nullable: true                      type: integer                    labels:                      additionalProperties:                        type: string                      description: The labels-related configuration to add/set on each Pod related object.                      nullable: true                      type: object                      x-kubernetes-preserve-unknown-fields: true                    placement:                      description: The affinity to place the rgw pods (default is to place on any available node)                      nullable: true                      properties:                        nodeAffinity:                          description: NodeAffinity is a group of node affinity scheduling rules                          properties:                            preferredDuringSchedulingIgnoredDuringExecution:                              description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.                              items:                                description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).                                properties:                                  preference:                                    description: A node selector term, associated with the corresponding weight.                                    properties:                                      matchExpressions:                                        description: A list of node selector requirements by node's labels.                                        items:                                          description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: The label key that the selector applies to.                                              type: string                                            operator:                                              description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                              type: string                                            values:                                              description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchFields:                                        description: A list of node selector requirements by node's fields.                                        items:                                          description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: The label key that the selector applies to.                                              type: string                                            operator:                                              description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                              type: string                                            values:                                              description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                    type: object                                    x-kubernetes-map-type: atomic                                  weight:                                    description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.                                    format: int32                                    type: integer                                required:                                  - preference                                  - weight                                type: object                              type: array                            requiredDuringSchedulingIgnoredDuringExecution:                              description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.                              properties:                                nodeSelectorTerms:                                  description: Required. A list of node selector terms. The terms are ORed.                                  items:                                    description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.                                    properties:                                      matchExpressions:                                        description: A list of node selector requirements by node's labels.                                        items:                                          description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: The label key that the selector applies to.                                              type: string                                            operator:                                              description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                              type: string                                            values:                                              description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchFields:                                        description: A list of node selector requirements by node's fields.                                        items:                                          description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: The label key that the selector applies to.                                              type: string                                            operator:                                              description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                              type: string                                            values:                                              description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                    type: object                                    x-kubernetes-map-type: atomic                                  type: array                              required:                                - nodeSelectorTerms                              type: object                              x-kubernetes-map-type: atomic                          type: object                        podAffinity:                          description: PodAffinity is a group of inter pod affinity scheduling rules                          properties:                            preferredDuringSchedulingIgnoredDuringExecution:                              description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.                              items:                                description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)                                properties:                                  podAffinityTerm:                                    description: Required. A pod affinity term, associated with the corresponding weight.                                    properties:                                      labelSelector:                                        description: A label query over a set of resources, in this case pods.                                        properties:                                          matchExpressions:                                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                            items:                                              description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                              properties:                                                key:                                                  description: key is the label key that the selector applies to.                                                  type: string                                                operator:                                                  description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                  type: string                                                values:                                                  description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                  items:                                                    type: string                                                  type: array                                              required:                                                - key                                                - operator                                              type: object                                            type: array                                          matchLabels:                                            additionalProperties:                                              type: string                                            description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                            type: object                                        type: object                                        x-kubernetes-map-type: atomic                                      namespaceSelector:                                        description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                        properties:                                          matchExpressions:                                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                            items:                                              description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                              properties:                                                key:                                                  description: key is the label key that the selector applies to.                                                  type: string                                                operator:                                                  description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                  type: string                                                values:                                                  description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                  items:                                                    type: string                                                  type: array                                              required:                                                - key                                                - operator                                              type: object                                            type: array                                          matchLabels:                                            additionalProperties:                                              type: string                                            description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                            type: object                                        type: object                                        x-kubernetes-map-type: atomic                                      namespaces:                                        description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                        items:                                          type: string                                        type: array                                      topologyKey:                                        description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                        type: string                                    required:                                      - topologyKey                                    type: object                                  weight:                                    description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.                                    format: int32                                    type: integer                                required:                                  - podAffinityTerm                                  - weight                                type: object                              type: array                            requiredDuringSchedulingIgnoredDuringExecution:                              description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.                              items:                                description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running                                properties:                                  labelSelector:                                    description: A label query over a set of resources, in this case pods.                                    properties:                                      matchExpressions:                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                        items:                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: key is the label key that the selector applies to.                                              type: string                                            operator:                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                              type: string                                            values:                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchLabels:                                        additionalProperties:                                          type: string                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                        type: object                                    type: object                                    x-kubernetes-map-type: atomic                                  namespaceSelector:                                    description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                    properties:                                      matchExpressions:                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                        items:                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: key is the label key that the selector applies to.                                              type: string                                            operator:                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                              type: string                                            values:                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchLabels:                                        additionalProperties:                                          type: string                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                        type: object                                    type: object                                    x-kubernetes-map-type: atomic                                  namespaces:                                    description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                    items:                                      type: string                                    type: array                                  topologyKey:                                    description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                    type: string                                required:                                  - topologyKey                                type: object                              type: array                          type: object                        podAntiAffinity:                          description: PodAntiAffinity is a group of inter pod anti affinity scheduling rules                          properties:                            preferredDuringSchedulingIgnoredDuringExecution:                              description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.                              items:                                description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)                                properties:                                  podAffinityTerm:                                    description: Required. A pod affinity term, associated with the corresponding weight.                                    properties:                                      labelSelector:                                        description: A label query over a set of resources, in this case pods.                                        properties:                                          matchExpressions:                                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                            items:                                              description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                              properties:                                                key:                                                  description: key is the label key that the selector applies to.                                                  type: string                                                operator:                                                  description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                  type: string                                                values:                                                  description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                  items:                                                    type: string                                                  type: array                                              required:                                                - key                                                - operator                                              type: object                                            type: array                                          matchLabels:                                            additionalProperties:                                              type: string                                            description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                            type: object                                        type: object                                        x-kubernetes-map-type: atomic                                      namespaceSelector:                                        description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                        properties:                                          matchExpressions:                                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                            items:                                              description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                              properties:                                                key:                                                  description: key is the label key that the selector applies to.                                                  type: string                                                operator:                                                  description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                                  type: string                                                values:                                                  description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                                  items:                                                    type: string                                                  type: array                                              required:                                                - key                                                - operator                                              type: object                                            type: array                                          matchLabels:                                            additionalProperties:                                              type: string                                            description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                            type: object                                        type: object                                        x-kubernetes-map-type: atomic                                      namespaces:                                        description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                        items:                                          type: string                                        type: array                                      topologyKey:                                        description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                        type: string                                    required:                                      - topologyKey                                    type: object                                  weight:                                    description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.                                    format: int32                                    type: integer                                required:                                  - podAffinityTerm                                  - weight                                type: object                              type: array                            requiredDuringSchedulingIgnoredDuringExecution:                              description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.                              items:                                description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running                                properties:                                  labelSelector:                                    description: A label query over a set of resources, in this case pods.                                    properties:                                      matchExpressions:                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                        items:                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: key is the label key that the selector applies to.                                              type: string                                            operator:                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                              type: string                                            values:                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchLabels:                                        additionalProperties:                                          type: string                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                        type: object                                    type: object                                    x-kubernetes-map-type: atomic                                  namespaceSelector:                                    description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                    properties:                                      matchExpressions:                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                        items:                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: key is the label key that the selector applies to.                                              type: string                                            operator:                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                              type: string                                            values:                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchLabels:                                        additionalProperties:                                          type: string                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                        type: object                                    type: object                                    x-kubernetes-map-type: atomic                                  namespaces:                                    description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                    items:                                      type: string                                    type: array                                  topologyKey:                                    description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                    type: string                                required:                                  - topologyKey                                type: object                              type: array                          type: object                        tolerations:                          description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>                          items:                            description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.                            properties:                              effect:                                description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.                                type: string                              key:                                description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.                                type: string                              operator:                                description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.                                type: string                              tolerationSeconds:                                description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.                                format: int64                                type: integer                              value:                                description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.                                type: string                            type: object                          type: array                        topologySpreadConstraints:                          description: TopologySpreadConstraint specifies how to spread matching pods among the given topology                          items:                            description: TopologySpreadConstraint specifies how to spread matching pods among the given topology.                            properties:                              labelSelector:                                description: LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.                                properties:                                  matchExpressions:                                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                    items:                                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: key is the label key that the selector applies to.                                          type: string                                        operator:                                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                          type: string                                        values:                                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                  matchLabels:                                    additionalProperties:                                      type: string                                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                    type: object                                type: object                                x-kubernetes-map-type: atomic                              matchLabelKeys:                                description: "MatchLabelKeys is a set of pod label keys to select the pods over which spreading will be calculated. The keys are used to lookup values from the incoming pod labels, those key-value labels are ANDed with labelSelector to select the group of existing pods over which spreading will be calculated for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when LabelSelector isn't set. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector. \n This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default)."                                items:                                  type: string                                type: array                                x-kubernetes-list-type: atomic                              maxSkew:                                description: 'MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | |  P P  |  P P  |   P   | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It''s a required field. Default value is 1 and 0 is not allowed.'                                format: int32                                type: integer                              minDomains:                                description: "MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats \"global minimum\" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule. \n For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | |  P P  |  P P  |  P P  | The number of domains is less than 5(MinDomains), so \"global minimum\" is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew. \n This is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default)."                                format: int32                                type: integer                              nodeAffinityPolicy:                                description: "NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. \n If this value is nil, the behavior is equivalent to the Honor policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag."                                type: string                              nodeTaintsPolicy:                                description: "NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included. \n If this value is nil, the behavior is equivalent to the Ignore policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag."                                type: string                              topologyKey:                                description: TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each <key, value> as a "bucket", and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes meet the requirements of nodeAffinityPolicy and nodeTaintsPolicy. e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology. And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology. It's a required field.                                type: string                              whenUnsatisfiable:                                description: 'WhenUnsatisfiable indicates how to deal with a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered "Unsatisfiable" for an incoming pod if and only if every possible node assignment for that pod would violate "MaxSkew" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P |   P   |   P   | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won''t make it *more* imbalanced. It''s a required field.'                                type: string                            required:                              - maxSkew                              - topologyKey                              - whenUnsatisfiable                            type: object                          type: array                      type: object                      x-kubernetes-preserve-unknown-fields: true                    port:                      description: The port the rgw service will be listening on (http)                      format: int32                      type: integer                    priorityClassName:                      description: PriorityClassName sets priority classes on the rgw pods                      type: string                    resources:                      description: The resource requirements for the rgw pods                      nullable: true                      properties:                        claims:                          description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers."                          items:                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.                            properties:                              name:                                description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.                                type: string                            required:                              - name                            type: object                          type: array                          x-kubernetes-list-map-keys:                            - name                          x-kubernetes-list-type: map                        limits:                          additionalProperties:                            anyOf:                              - type: integer                              - type: string                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                            x-kubernetes-int-or-string: true                          description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                          type: object                        requests:                          additionalProperties:                            anyOf:                              - type: integer                              - type: string                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                            x-kubernetes-int-or-string: true                          description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                          type: object                      type: object                      x-kubernetes-preserve-unknown-fields: true                    securePort:                      description: The port the rgw service will be listening on (https)                      format: int32                      maximum: 65535                      minimum: 0                      nullable: true                      type: integer                    service:                      description: The configuration related to add/set on each rgw service.                      nullable: true                      properties:                        annotations:                          additionalProperties:                            type: string                          description: The annotations-related configuration to add/set on each rgw service. nullable optional                          type: object                      type: object                    sslCertificateRef:                      description: The name of the secret that stores the ssl certificate for secure rgw connections                      nullable: true                      type: string                  type: object                healthCheck:                  description: The RGW health probes                  nullable: true                  properties:                    readinessProbe:                      description: ProbeSpec is a wrapper around Probe so it can be enabled or disabled for a Ceph daemon                      properties:                        disabled:                          description: Disabled determines whether probe is disable or not                          type: boolean                        probe:                          description: Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.                          properties:                            exec:                              description: Exec specifies the action to take.                              properties:                                command:                                  description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.                                  items:                                    type: string                                  type: array                              type: object                            failureThreshold:                              description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.                              format: int32                              type: integer                            grpc:                              description: GRPC specifies an action involving a GRPC port.                              properties:                                port:                                  description: Port number of the gRPC service. Number must be in the range 1 to 65535.                                  format: int32                                  type: integer                                service:                                  description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC."                                  type: string                              required:                                - port                              type: object                            httpGet:                              description: HTTPGet specifies the http request to perform.                              properties:                                host:                                  description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.                                  type: string                                httpHeaders:                                  description: Custom headers to set in the request. HTTP allows repeated headers.                                  items:                                    description: HTTPHeader describes a custom header to be used in HTTP probes                                    properties:                                      name:                                        description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.                                        type: string                                      value:                                        description: The header field value                                        type: string                                    required:                                      - name                                      - value                                    type: object                                  type: array                                path:                                  description: Path to access on the HTTP server.                                  type: string                                port:                                  anyOf:                                    - type: integer                                    - type: string                                  description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.                                  x-kubernetes-int-or-string: true                                scheme:                                  description: Scheme to use for connecting to the host. Defaults to HTTP.                                  type: string                              required:                                - port                              type: object                            initialDelaySeconds:                              description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'                              format: int32                              type: integer                            periodSeconds:                              description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.                              format: int32                              type: integer                            successThreshold:                              description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.                              format: int32                              type: integer                            tcpSocket:                              description: TCPSocket specifies an action involving a TCP port.                              properties:                                host:                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'                                  type: string                                port:                                  anyOf:                                    - type: integer                                    - type: string                                  description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.                                  x-kubernetes-int-or-string: true                              required:                                - port                              type: object                            terminationGracePeriodSeconds:                              description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.                              format: int64                              type: integer                            timeoutSeconds:                              description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'                              format: int32                              type: integer                          type: object                      type: object                      x-kubernetes-preserve-unknown-fields: true                    startupProbe:                      description: ProbeSpec is a wrapper around Probe so it can be enabled or disabled for a Ceph daemon                      properties:                        disabled:                          description: Disabled determines whether probe is disable or not                          type: boolean                        probe:                          description: Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.                          properties:                            exec:                              description: Exec specifies the action to take.                              properties:                                command:                                  description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.                                  items:                                    type: string                                  type: array                              type: object                            failureThreshold:                              description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.                              format: int32                              type: integer                            grpc:                              description: GRPC specifies an action involving a GRPC port.                              properties:                                port:                                  description: Port number of the gRPC service. Number must be in the range 1 to 65535.                                  format: int32                                  type: integer                                service:                                  description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC."                                  type: string                              required:                                - port                              type: object                            httpGet:                              description: HTTPGet specifies the http request to perform.                              properties:                                host:                                  description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.                                  type: string                                httpHeaders:                                  description: Custom headers to set in the request. HTTP allows repeated headers.                                  items:                                    description: HTTPHeader describes a custom header to be used in HTTP probes                                    properties:                                      name:                                        description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.                                        type: string                                      value:                                        description: The header field value                                        type: string                                    required:                                      - name                                      - value                                    type: object                                  type: array                                path:                                  description: Path to access on the HTTP server.                                  type: string                                port:                                  anyOf:                                    - type: integer                                    - type: string                                  description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.                                  x-kubernetes-int-or-string: true                                scheme:                                  description: Scheme to use for connecting to the host. Defaults to HTTP.                                  type: string                              required:                                - port                              type: object                            initialDelaySeconds:                              description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'                              format: int32                              type: integer                            periodSeconds:                              description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.                              format: int32                              type: integer                            successThreshold:                              description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.                              format: int32                              type: integer                            tcpSocket:                              description: TCPSocket specifies an action involving a TCP port.                              properties:                                host:                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'                                  type: string                                port:                                  anyOf:                                    - type: integer                                    - type: string                                  description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.                                  x-kubernetes-int-or-string: true                              required:                                - port                              type: object                            terminationGracePeriodSeconds:                              description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.                              format: int64                              type: integer                            timeoutSeconds:                              description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'                              format: int32                              type: integer                          type: object                      type: object                  type: object                metadataPool:                  description: The metadata pool settings                  nullable: true                  properties:                    compressionMode:                      description: 'DEPRECATED: use Parameters instead, e.g., Parameters["compression_mode"] = "force" The inline compression mode in Bluestore OSD to set to (options are: none, passive, aggressive, force) Do NOT set a default value for kubebuilder as this will override the Parameters'                      enum:                        - none                        - passive                        - aggressive                        - force                        - ""                      nullable: true                      type: string                    crushRoot:                      description: The root of the crush hierarchy utilized by the pool                      nullable: true                      type: string                    deviceClass:                      description: The device class the OSD should set to for use in the pool                      nullable: true                      type: string                    enableRBDStats:                      description: EnableRBDStats is used to enable gathering of statistics for all RBD images in the pool                      type: boolean                    erasureCoded:                      description: The erasure code settings                      properties:                        algorithm:                          description: The algorithm for erasure coding                          type: string                        codingChunks:                          description: Number of coding chunks per object in an erasure coded storage pool (required for erasure-coded pool type). This is the number of OSDs that can be lost simultaneously before data cannot be recovered.                          minimum: 0                          type: integer                        dataChunks:                          description: Number of data chunks per object in an erasure coded storage pool (required for erasure-coded pool type). The number of chunks required to recover an object when any single OSD is lost is the same as dataChunks so be aware that the larger the number of data chunks, the higher the cost of recovery.                          minimum: 0                          type: integer                      required:                        - codingChunks                        - dataChunks                      type: object                    failureDomain:                      description: 'The failure domain: osd/host/(region or zone if available) - technically also any type in the crush map'                      type: string                    mirroring:                      description: The mirroring settings                      properties:                        enabled:                          description: Enabled whether this pool is mirrored or not                          type: boolean                        mode:                          description: 'Mode is the mirroring mode: either pool or image'                          type: string                        peers:                          description: Peers represents the peers spec                          nullable: true                          properties:                            secretNames:                              description: SecretNames represents the Kubernetes Secret names to add rbd-mirror or cephfs-mirror peers                              items:                                type: string                              type: array                          type: object                        snapshotSchedules:                          description: SnapshotSchedules is the scheduling of snapshot for mirrored images/pools                          items:                            description: SnapshotScheduleSpec represents the snapshot scheduling settings of a mirrored pool                            properties:                              interval:                                description: Interval represent the periodicity of the snapshot.                                type: string                              path:                                description: Path is the path to snapshot, only valid for CephFS                                type: string                              startTime:                                description: StartTime indicates when to start the snapshot                                type: string                            type: object                          type: array                      type: object                    parameters:                      additionalProperties:                        type: string                      description: Parameters is a list of properties to enable on a given pool                      nullable: true                      type: object                      x-kubernetes-preserve-unknown-fields: true                    quotas:                      description: The quota settings                      nullable: true                      properties:                        maxBytes:                          description: MaxBytes represents the quota in bytes Deprecated in favor of MaxSize                          format: int64                          type: integer                        maxObjects:                          description: MaxObjects represents the quota in objects                          format: int64                          type: integer                        maxSize:                          description: MaxSize represents the quota in bytes as a string                          pattern: ^[0-9]+[\.]?[0-9]*([KMGTPE]i|[kMGTPE])?$                          type: string                      type: object                    replicated:                      description: The replication settings                      properties:                        hybridStorage:                          description: HybridStorage represents hybrid storage tier settings                          nullable: true                          properties:                            primaryDeviceClass:                              description: PrimaryDeviceClass represents high performance tier (for example SSD or NVME) for Primary OSD                              minLength: 1                              type: string                            secondaryDeviceClass:                              description: SecondaryDeviceClass represents low performance tier (for example HDDs) for remaining OSDs                              minLength: 1                              type: string                          required:                            - primaryDeviceClass                            - secondaryDeviceClass                          type: object                        replicasPerFailureDomain:                          description: ReplicasPerFailureDomain the number of replica in the specified failure domain                          minimum: 1                          type: integer                        requireSafeReplicaSize:                          description: RequireSafeReplicaSize if false allows you to set replica 1                          type: boolean                        size:                          description: Size - Number of copies per object in a replicated storage pool, including the object itself (required for replicated pool type)                          minimum: 0                          type: integer                        subFailureDomain:                          description: SubFailureDomain the name of the sub-failure domain                          type: string                        targetSizeRatio:                          description: TargetSizeRatio gives a hint (%) to Ceph in terms of expected consumption of the total cluster capacity                          type: number                      required:                        - size                      type: object                    statusCheck:                      description: The mirroring statusCheck                      properties:                        mirror:                          description: HealthCheckSpec represents the health check of an object store bucket                          nullable: true                          properties:                            disabled:                              type: boolean                            interval:                              description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds                              type: string                            timeout:                              type: string                          type: object                      type: object                      x-kubernetes-preserve-unknown-fields: true                  type: object                preservePoolsOnDelete:                  description: Preserve pools on object store deletion                  type: boolean                security:                  description: Security represents security settings                  nullable: true                  properties:                    keyRotation:                      description: KeyRotation defines options for Key Rotation.                      nullable: true                      properties:                        enabled:                          default: false                          description: Enabled represents whether the key rotation is enabled.                          type: boolean                        schedule:                          description: Schedule represents the cron schedule for key rotation.                          type: string                      type: object                    kms:                      description: KeyManagementService is the main Key Management option                      nullable: true                      properties:                        connectionDetails:                          additionalProperties:                            type: string                          description: ConnectionDetails contains the KMS connection details (address, port etc)                          nullable: true                          type: object                          x-kubernetes-preserve-unknown-fields: true                        tokenSecretName:                          description: TokenSecretName is the kubernetes secret containing the KMS token                          type: string                      type: object                    s3:                      description: The settings for supporting AWS-SSE:S3 with RGW                      nullable: true                      properties:                        connectionDetails:                          additionalProperties:                            type: string                          description: ConnectionDetails contains the KMS connection details (address, port etc)                          nullable: true                          type: object                          x-kubernetes-preserve-unknown-fields: true                        tokenSecretName:                          description: TokenSecretName is the kubernetes secret containing the KMS token                          type: string                      type: object                  type: object                zone:                  description: The multisite info                  nullable: true                  properties:                    name:                      description: RGW Zone the Object Store is in                      type: string                  required:                    - name                  type: object              type: object            status:              description: ObjectStoreStatus represents the status of a Ceph Object Store resource              properties:                conditions:                  items:                    description: Condition represents a status condition on any Rook-Ceph Custom Resource.                    properties:                      lastHeartbeatTime:                        format: date-time                        type: string                      lastTransitionTime:                        format: date-time                        type: string                      message:                        type: string                      reason:                        description: ConditionReason is a reason for a condition                        type: string                      status:                        type: string                      type:                        description: ConditionType represent a resource's status                        type: string                    type: object                  type: array                endpoints:                  properties:                    insecure:                      items:                        type: string                      nullable: true                      type: array                    secure:                      items:                        type: string                      nullable: true                      type: array                  type: object                info:                  additionalProperties:                    type: string                  nullable: true                  type: object                message:                  type: string                observedGeneration:                  description: ObservedGeneration is the latest generation observed by the controller.                  format: int64                  type: integer                phase:                  description: ConditionType represent a resource's status                  type: string              type: object              x-kubernetes-preserve-unknown-fields: true          required:            - metadata            - spec          type: object      served: true      storage: true      subresources:        status: {}---# Source: rook-ceph/templates/resources.yamlapiVersion: apiextensions.k8s.io/v1kind: CustomResourceDefinitionmetadata:  annotations:    controller-gen.kubebuilder.io/version: v0.11.3    helm.sh/resource-policy: keep  creationTimestamp: null  name: cephobjectstoreusers.ceph.rook.iospec:  group: ceph.rook.io  names:    kind: CephObjectStoreUser    listKind: CephObjectStoreUserList    plural: cephobjectstoreusers    shortNames:      - rcou      - objectuser    singular: cephobjectstoreuser  scope: Namespaced  versions:    - additionalPrinterColumns:        - jsonPath: .status.phase          name: Phase          type: string      name: v1      schema:        openAPIV3Schema:          description: CephObjectStoreUser represents a Ceph Object Store Gateway User          properties:            apiVersion:              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'              type: string            kind:              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'              type: string            metadata:              type: object            spec:              description: ObjectStoreUserSpec represent the spec of an Objectstoreuser              properties:                capabilities:                  description: Additional admin-level capabilities for the Ceph object store user                  nullable: true                  properties:                    amz-cache:                      description: Add capabilities for user to send request to RGW Cache API header. Documented in https://docs.ceph.com/en/quincy/radosgw/rgw-cache/#cache-api                      enum:                        - '*'                        - read                        - write                        - read, write                      type: string                    bilog:                      description: Add capabilities for user to change bucket index logging. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities                      enum:                        - '*'                        - read                        - write                        - read, write                      type: string                    bucket:                      description: Admin capabilities to read/write Ceph object store buckets. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities                      enum:                        - '*'                        - read                        - write                        - read, write                      type: string                    buckets:                      description: Admin capabilities to read/write Ceph object store buckets. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities                      enum:                        - '*'                        - read                        - write                        - read, write                      type: string                    datalog:                      description: Add capabilities for user to change data logging. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities                      enum:                        - '*'                        - read                        - write                        - read, write                      type: string                    info:                      description: Admin capabilities to read/write information about the user. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities                      enum:                        - '*'                        - read                        - write                        - read, write                      type: string                    mdlog:                      description: Add capabilities for user to change metadata logging. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities                      enum:                        - '*'                        - read                        - write                        - read, write                      type: string                    metadata:                      description: Admin capabilities to read/write Ceph object store metadata. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities                      enum:                        - '*'                        - read                        - write                        - read, write                      type: string                    oidc-provider:                      description: Add capabilities for user to change oidc provider. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities                      enum:                        - '*'                        - read                        - write                        - read, write                      type: string                    ratelimit:                      description: Add capabilities for user to set rate limiter for user and bucket. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities                      enum:                        - '*'                        - read                        - write                        - read, write                      type: string                    roles:                      description: Admin capabilities to read/write roles for user. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities                      enum:                        - '*'                        - read                        - write                        - read, write                      type: string                    usage:                      description: Admin capabilities to read/write Ceph object store usage. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities                      enum:                        - '*'                        - read                        - write                        - read, write                      type: string                    user:                      description: Admin capabilities to read/write Ceph object store users. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities                      enum:                        - '*'                        - read                        - write                        - read, write                      type: string                    user-policy:                      description: Add capabilities for user to change user policies. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities                      enum:                        - '*'                        - read                        - write                        - read, write                      type: string                    users:                      description: Admin capabilities to read/write Ceph object store users. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities                      enum:                        - '*'                        - read                        - write                        - read, write                      type: string                    zone:                      description: Admin capabilities to read/write Ceph object store zones. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities                      enum:                        - '*'                        - read                        - write                        - read, write                      type: string                  type: object                clusterNamespace:                  description: The namespace where the parent CephCluster and CephObjectStore are found                  type: string                displayName:                  description: The display name for the ceph users                  type: string                quotas:                  description: ObjectUserQuotaSpec can be used to set quotas for the object store user to limit their usage. See the [Ceph docs](https://docs.ceph.com/en/latest/radosgw/admin/?#quota-management) for more                  nullable: true                  properties:                    maxBuckets:                      description: Maximum bucket limit for the ceph user                      nullable: true                      type: integer                    maxObjects:                      description: Maximum number of objects across all the user's buckets                      format: int64                      nullable: true                      type: integer                    maxSize:                      anyOf:                        - type: integer                        - type: string                      description: Maximum size limit of all objects across all the user's buckets See https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity for more info.                      nullable: true                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                      x-kubernetes-int-or-string: true                  type: object                store:                  description: The store the user will be created in                  type: string              type: object            status:              description: ObjectStoreUserStatus represents the status Ceph Object Store Gateway User              properties:                info:                  additionalProperties:                    type: string                  nullable: true                  type: object                observedGeneration:                  description: ObservedGeneration is the latest generation observed by the controller.                  format: int64                  type: integer                phase:                  type: string              type: object              x-kubernetes-preserve-unknown-fields: true          required:            - metadata            - spec          type: object      served: true      storage: true      subresources:        status: {}---# Source: rook-ceph/templates/resources.yamlapiVersion: apiextensions.k8s.io/v1kind: CustomResourceDefinitionmetadata:  annotations:    controller-gen.kubebuilder.io/version: v0.11.3    helm.sh/resource-policy: keep  creationTimestamp: null  name: cephobjectzonegroups.ceph.rook.iospec:  group: ceph.rook.io  names:    kind: CephObjectZoneGroup    listKind: CephObjectZoneGroupList    plural: cephobjectzonegroups    singular: cephobjectzonegroup  scope: Namespaced  versions:    - additionalPrinterColumns:        - jsonPath: .status.phase          name: Phase          type: string      name: v1      schema:        openAPIV3Schema:          description: CephObjectZoneGroup represents a Ceph Object Store Gateway Zone Group          properties:            apiVersion:              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'              type: string            kind:              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'              type: string            metadata:              type: object            spec:              description: ObjectZoneGroupSpec represent the spec of an ObjectZoneGroup              properties:                realm:                  description: The display name for the ceph users                  type: string              required:                - realm              type: object            status:              description: Status represents the status of an object              properties:                conditions:                  items:                    description: Condition represents a status condition on any Rook-Ceph Custom Resource.                    properties:                      lastHeartbeatTime:                        format: date-time                        type: string                      lastTransitionTime:                        format: date-time                        type: string                      message:                        type: string                      reason:                        description: ConditionReason is a reason for a condition                        type: string                      status:                        type: string                      type:                        description: ConditionType represent a resource's status                        type: string                    type: object                  type: array                observedGeneration:                  description: ObservedGeneration is the latest generation observed by the controller.                  format: int64                  type: integer                phase:                  type: string              type: object              x-kubernetes-preserve-unknown-fields: true          required:            - metadata            - spec          type: object      served: true      storage: true      subresources:        status: {}---# Source: rook-ceph/templates/resources.yamlapiVersion: apiextensions.k8s.io/v1kind: CustomResourceDefinitionmetadata:  annotations:    controller-gen.kubebuilder.io/version: v0.11.3    helm.sh/resource-policy: keep  creationTimestamp: null  name: cephobjectzones.ceph.rook.iospec:  group: ceph.rook.io  names:    kind: CephObjectZone    listKind: CephObjectZoneList    plural: cephobjectzones    singular: cephobjectzone  scope: Namespaced  versions:    - additionalPrinterColumns:        - jsonPath: .status.phase          name: Phase          type: string      name: v1      schema:        openAPIV3Schema:          description: CephObjectZone represents a Ceph Object Store Gateway Zone          properties:            apiVersion:              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'              type: string            kind:              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'              type: string            metadata:              type: object            spec:              description: ObjectZoneSpec represent the spec of an ObjectZone              properties:                customEndpoints:                  description: "If this zone cannot be accessed from other peer Ceph clusters via the ClusterIP Service endpoint created by Rook, you must set this to the externally reachable endpoint(s). You may include the port in the definition. For example: \"https://my-object-store.my-domain.net:443\". In many cases, you should set this to the endpoint of the ingress resource that makes the CephObjectStore associated with this CephObjectStoreZone reachable to peer clusters. The list can have one or more endpoints pointing to different RGW servers in the zone. \n If a CephObjectStore endpoint is omitted from this list, that object store's gateways will not receive multisite replication data (see CephObjectStore.spec.gateway.disableMultisiteSyncTraffic)."                  items:                    type: string                  nullable: true                  type: array                dataPool:                  description: The data pool settings                  nullable: true                  properties:                    compressionMode:                      description: 'DEPRECATED: use Parameters instead, e.g., Parameters["compression_mode"] = "force" The inline compression mode in Bluestore OSD to set to (options are: none, passive, aggressive, force) Do NOT set a default value for kubebuilder as this will override the Parameters'                      enum:                        - none                        - passive                        - aggressive                        - force                        - ""                      nullable: true                      type: string                    crushRoot:                      description: The root of the crush hierarchy utilized by the pool                      nullable: true                      type: string                    deviceClass:                      description: The device class the OSD should set to for use in the pool                      nullable: true                      type: string                    enableRBDStats:                      description: EnableRBDStats is used to enable gathering of statistics for all RBD images in the pool                      type: boolean                    erasureCoded:                      description: The erasure code settings                      properties:                        algorithm:                          description: The algorithm for erasure coding                          type: string                        codingChunks:                          description: Number of coding chunks per object in an erasure coded storage pool (required for erasure-coded pool type). This is the number of OSDs that can be lost simultaneously before data cannot be recovered.                          minimum: 0                          type: integer                        dataChunks:                          description: Number of data chunks per object in an erasure coded storage pool (required for erasure-coded pool type). The number of chunks required to recover an object when any single OSD is lost is the same as dataChunks so be aware that the larger the number of data chunks, the higher the cost of recovery.                          minimum: 0                          type: integer                      required:                        - codingChunks                        - dataChunks                      type: object                    failureDomain:                      description: 'The failure domain: osd/host/(region or zone if available) - technically also any type in the crush map'                      type: string                    mirroring:                      description: The mirroring settings                      properties:                        enabled:                          description: Enabled whether this pool is mirrored or not                          type: boolean                        mode:                          description: 'Mode is the mirroring mode: either pool or image'                          type: string                        peers:                          description: Peers represents the peers spec                          nullable: true                          properties:                            secretNames:                              description: SecretNames represents the Kubernetes Secret names to add rbd-mirror or cephfs-mirror peers                              items:                                type: string                              type: array                          type: object                        snapshotSchedules:                          description: SnapshotSchedules is the scheduling of snapshot for mirrored images/pools                          items:                            description: SnapshotScheduleSpec represents the snapshot scheduling settings of a mirrored pool                            properties:                              interval:                                description: Interval represent the periodicity of the snapshot.                                type: string                              path:                                description: Path is the path to snapshot, only valid for CephFS                                type: string                              startTime:                                description: StartTime indicates when to start the snapshot                                type: string                            type: object                          type: array                      type: object                    parameters:                      additionalProperties:                        type: string                      description: Parameters is a list of properties to enable on a given pool                      nullable: true                      type: object                      x-kubernetes-preserve-unknown-fields: true                    quotas:                      description: The quota settings                      nullable: true                      properties:                        maxBytes:                          description: MaxBytes represents the quota in bytes Deprecated in favor of MaxSize                          format: int64                          type: integer                        maxObjects:                          description: MaxObjects represents the quota in objects                          format: int64                          type: integer                        maxSize:                          description: MaxSize represents the quota in bytes as a string                          pattern: ^[0-9]+[\.]?[0-9]*([KMGTPE]i|[kMGTPE])?$                          type: string                      type: object                    replicated:                      description: The replication settings                      properties:                        hybridStorage:                          description: HybridStorage represents hybrid storage tier settings                          nullable: true                          properties:                            primaryDeviceClass:                              description: PrimaryDeviceClass represents high performance tier (for example SSD or NVME) for Primary OSD                              minLength: 1                              type: string                            secondaryDeviceClass:                              description: SecondaryDeviceClass represents low performance tier (for example HDDs) for remaining OSDs                              minLength: 1                              type: string                          required:                            - primaryDeviceClass                            - secondaryDeviceClass                          type: object                        replicasPerFailureDomain:                          description: ReplicasPerFailureDomain the number of replica in the specified failure domain                          minimum: 1                          type: integer                        requireSafeReplicaSize:                          description: RequireSafeReplicaSize if false allows you to set replica 1                          type: boolean                        size:                          description: Size - Number of copies per object in a replicated storage pool, including the object itself (required for replicated pool type)                          minimum: 0                          type: integer                        subFailureDomain:                          description: SubFailureDomain the name of the sub-failure domain                          type: string                        targetSizeRatio:                          description: TargetSizeRatio gives a hint (%) to Ceph in terms of expected consumption of the total cluster capacity                          type: number                      required:                        - size                      type: object                    statusCheck:                      description: The mirroring statusCheck                      properties:                        mirror:                          description: HealthCheckSpec represents the health check of an object store bucket                          nullable: true                          properties:                            disabled:                              type: boolean                            interval:                              description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds                              type: string                            timeout:                              type: string                          type: object                      type: object                      x-kubernetes-preserve-unknown-fields: true                  type: object                metadataPool:                  description: The metadata pool settings                  nullable: true                  properties:                    compressionMode:                      description: 'DEPRECATED: use Parameters instead, e.g., Parameters["compression_mode"] = "force" The inline compression mode in Bluestore OSD to set to (options are: none, passive, aggressive, force) Do NOT set a default value for kubebuilder as this will override the Parameters'                      enum:                        - none                        - passive                        - aggressive                        - force                        - ""                      nullable: true                      type: string                    crushRoot:                      description: The root of the crush hierarchy utilized by the pool                      nullable: true                      type: string                    deviceClass:                      description: The device class the OSD should set to for use in the pool                      nullable: true                      type: string                    enableRBDStats:                      description: EnableRBDStats is used to enable gathering of statistics for all RBD images in the pool                      type: boolean                    erasureCoded:                      description: The erasure code settings                      properties:                        algorithm:                          description: The algorithm for erasure coding                          type: string                        codingChunks:                          description: Number of coding chunks per object in an erasure coded storage pool (required for erasure-coded pool type). This is the number of OSDs that can be lost simultaneously before data cannot be recovered.                          minimum: 0                          type: integer                        dataChunks:                          description: Number of data chunks per object in an erasure coded storage pool (required for erasure-coded pool type). The number of chunks required to recover an object when any single OSD is lost is the same as dataChunks so be aware that the larger the number of data chunks, the higher the cost of recovery.                          minimum: 0                          type: integer                      required:                        - codingChunks                        - dataChunks                      type: object                    failureDomain:                      description: 'The failure domain: osd/host/(region or zone if available) - technically also any type in the crush map'                      type: string                    mirroring:                      description: The mirroring settings                      properties:                        enabled:                          description: Enabled whether this pool is mirrored or not                          type: boolean                        mode:                          description: 'Mode is the mirroring mode: either pool or image'                          type: string                        peers:                          description: Peers represents the peers spec                          nullable: true                          properties:                            secretNames:                              description: SecretNames represents the Kubernetes Secret names to add rbd-mirror or cephfs-mirror peers                              items:                                type: string                              type: array                          type: object                        snapshotSchedules:                          description: SnapshotSchedules is the scheduling of snapshot for mirrored images/pools                          items:                            description: SnapshotScheduleSpec represents the snapshot scheduling settings of a mirrored pool                            properties:                              interval:                                description: Interval represent the periodicity of the snapshot.                                type: string                              path:                                description: Path is the path to snapshot, only valid for CephFS                                type: string                              startTime:                                description: StartTime indicates when to start the snapshot                                type: string                            type: object                          type: array                      type: object                    parameters:                      additionalProperties:                        type: string                      description: Parameters is a list of properties to enable on a given pool                      nullable: true                      type: object                      x-kubernetes-preserve-unknown-fields: true                    quotas:                      description: The quota settings                      nullable: true                      properties:                        maxBytes:                          description: MaxBytes represents the quota in bytes Deprecated in favor of MaxSize                          format: int64                          type: integer                        maxObjects:                          description: MaxObjects represents the quota in objects                          format: int64                          type: integer                        maxSize:                          description: MaxSize represents the quota in bytes as a string                          pattern: ^[0-9]+[\.]?[0-9]*([KMGTPE]i|[kMGTPE])?$                          type: string                      type: object                    replicated:                      description: The replication settings                      properties:                        hybridStorage:                          description: HybridStorage represents hybrid storage tier settings                          nullable: true                          properties:                            primaryDeviceClass:                              description: PrimaryDeviceClass represents high performance tier (for example SSD or NVME) for Primary OSD                              minLength: 1                              type: string                            secondaryDeviceClass:                              description: SecondaryDeviceClass represents low performance tier (for example HDDs) for remaining OSDs                              minLength: 1                              type: string                          required:                            - primaryDeviceClass                            - secondaryDeviceClass                          type: object                        replicasPerFailureDomain:                          description: ReplicasPerFailureDomain the number of replica in the specified failure domain                          minimum: 1                          type: integer                        requireSafeReplicaSize:                          description: RequireSafeReplicaSize if false allows you to set replica 1                          type: boolean                        size:                          description: Size - Number of copies per object in a replicated storage pool, including the object itself (required for replicated pool type)                          minimum: 0                          type: integer                        subFailureDomain:                          description: SubFailureDomain the name of the sub-failure domain                          type: string                        targetSizeRatio:                          description: TargetSizeRatio gives a hint (%) to Ceph in terms of expected consumption of the total cluster capacity                          type: number                      required:                        - size                      type: object                    statusCheck:                      description: The mirroring statusCheck                      properties:                        mirror:                          description: HealthCheckSpec represents the health check of an object store bucket                          nullable: true                          properties:                            disabled:                              type: boolean                            interval:                              description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds                              type: string                            timeout:                              type: string                          type: object                      type: object                      x-kubernetes-preserve-unknown-fields: true                  type: object                preservePoolsOnDelete:                  default: true                  description: Preserve pools on object zone deletion                  type: boolean                zoneGroup:                  description: The display name for the ceph users                  type: string              required:                - dataPool                - metadataPool                - zoneGroup              type: object            status:              description: Status represents the status of an object              properties:                conditions:                  items:                    description: Condition represents a status condition on any Rook-Ceph Custom Resource.                    properties:                      lastHeartbeatTime:                        format: date-time                        type: string                      lastTransitionTime:                        format: date-time                        type: string                      message:                        type: string                      reason:                        description: ConditionReason is a reason for a condition                        type: string                      status:                        type: string                      type:                        description: ConditionType represent a resource's status                        type: string                    type: object                  type: array                observedGeneration:                  description: ObservedGeneration is the latest generation observed by the controller.                  format: int64                  type: integer                phase:                  type: string              type: object              x-kubernetes-preserve-unknown-fields: true          required:            - metadata            - spec          type: object      served: true      storage: true      subresources:        status: {}---# Source: rook-ceph/templates/resources.yamlapiVersion: apiextensions.k8s.io/v1kind: CustomResourceDefinitionmetadata:  annotations:    controller-gen.kubebuilder.io/version: v0.11.3    helm.sh/resource-policy: keep  creationTimestamp: null  name: cephrbdmirrors.ceph.rook.iospec:  group: ceph.rook.io  names:    kind: CephRBDMirror    listKind: CephRBDMirrorList    plural: cephrbdmirrors    singular: cephrbdmirror  scope: Namespaced  versions:    - additionalPrinterColumns:        - jsonPath: .status.phase          name: Phase          type: string      name: v1      schema:        openAPIV3Schema:          description: CephRBDMirror represents a Ceph RBD Mirror          properties:            apiVersion:              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'              type: string            kind:              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'              type: string            metadata:              type: object            spec:              description: RBDMirroringSpec represents the specification of an RBD mirror daemon              properties:                annotations:                  additionalProperties:                    type: string                  description: The annotations-related configuration to add/set on each Pod related object.                  nullable: true                  type: object                  x-kubernetes-preserve-unknown-fields: true                count:                  description: Count represents the number of rbd mirror instance to run                  minimum: 1                  type: integer                labels:                  additionalProperties:                    type: string                  description: The labels-related configuration to add/set on each Pod related object.                  nullable: true                  type: object                  x-kubernetes-preserve-unknown-fields: true                peers:                  description: Peers represents the peers spec                  nullable: true                  properties:                    secretNames:                      description: SecretNames represents the Kubernetes Secret names to add rbd-mirror or cephfs-mirror peers                      items:                        type: string                      type: array                  type: object                placement:                  description: The affinity to place the rgw pods (default is to place on any available node)                  nullable: true                  properties:                    nodeAffinity:                      description: NodeAffinity is a group of node affinity scheduling rules                      properties:                        preferredDuringSchedulingIgnoredDuringExecution:                          description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.                          items:                            description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).                            properties:                              preference:                                description: A node selector term, associated with the corresponding weight.                                properties:                                  matchExpressions:                                    description: A list of node selector requirements by node's labels.                                    items:                                      description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: The label key that the selector applies to.                                          type: string                                        operator:                                          description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                          type: string                                        values:                                          description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                  matchFields:                                    description: A list of node selector requirements by node's fields.                                    items:                                      description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: The label key that the selector applies to.                                          type: string                                        operator:                                          description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                          type: string                                        values:                                          description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                type: object                                x-kubernetes-map-type: atomic                              weight:                                description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.                                format: int32                                type: integer                            required:                              - preference                              - weight                            type: object                          type: array                        requiredDuringSchedulingIgnoredDuringExecution:                          description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.                          properties:                            nodeSelectorTerms:                              description: Required. A list of node selector terms. The terms are ORed.                              items:                                description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.                                properties:                                  matchExpressions:                                    description: A list of node selector requirements by node's labels.                                    items:                                      description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: The label key that the selector applies to.                                          type: string                                        operator:                                          description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                          type: string                                        values:                                          description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                  matchFields:                                    description: A list of node selector requirements by node's fields.                                    items:                                      description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: The label key that the selector applies to.                                          type: string                                        operator:                                          description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.                                          type: string                                        values:                                          description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                type: object                                x-kubernetes-map-type: atomic                              type: array                          required:                            - nodeSelectorTerms                          type: object                          x-kubernetes-map-type: atomic                      type: object                    podAffinity:                      description: PodAffinity is a group of inter pod affinity scheduling rules                      properties:                        preferredDuringSchedulingIgnoredDuringExecution:                          description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.                          items:                            description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)                            properties:                              podAffinityTerm:                                description: Required. A pod affinity term, associated with the corresponding weight.                                properties:                                  labelSelector:                                    description: A label query over a set of resources, in this case pods.                                    properties:                                      matchExpressions:                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                        items:                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: key is the label key that the selector applies to.                                              type: string                                            operator:                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                              type: string                                            values:                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchLabels:                                        additionalProperties:                                          type: string                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                        type: object                                    type: object                                    x-kubernetes-map-type: atomic                                  namespaceSelector:                                    description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                    properties:                                      matchExpressions:                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                        items:                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: key is the label key that the selector applies to.                                              type: string                                            operator:                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                              type: string                                            values:                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchLabels:                                        additionalProperties:                                          type: string                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                        type: object                                    type: object                                    x-kubernetes-map-type: atomic                                  namespaces:                                    description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                    items:                                      type: string                                    type: array                                  topologyKey:                                    description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                    type: string                                required:                                  - topologyKey                                type: object                              weight:                                description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.                                format: int32                                type: integer                            required:                              - podAffinityTerm                              - weight                            type: object                          type: array                        requiredDuringSchedulingIgnoredDuringExecution:                          description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.                          items:                            description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running                            properties:                              labelSelector:                                description: A label query over a set of resources, in this case pods.                                properties:                                  matchExpressions:                                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                    items:                                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: key is the label key that the selector applies to.                                          type: string                                        operator:                                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                          type: string                                        values:                                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                  matchLabels:                                    additionalProperties:                                      type: string                                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                    type: object                                type: object                                x-kubernetes-map-type: atomic                              namespaceSelector:                                description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                properties:                                  matchExpressions:                                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                    items:                                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: key is the label key that the selector applies to.                                          type: string                                        operator:                                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                          type: string                                        values:                                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                  matchLabels:                                    additionalProperties:                                      type: string                                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                    type: object                                type: object                                x-kubernetes-map-type: atomic                              namespaces:                                description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                items:                                  type: string                                type: array                              topologyKey:                                description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                type: string                            required:                              - topologyKey                            type: object                          type: array                      type: object                    podAntiAffinity:                      description: PodAntiAffinity is a group of inter pod anti affinity scheduling rules                      properties:                        preferredDuringSchedulingIgnoredDuringExecution:                          description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.                          items:                            description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)                            properties:                              podAffinityTerm:                                description: Required. A pod affinity term, associated with the corresponding weight.                                properties:                                  labelSelector:                                    description: A label query over a set of resources, in this case pods.                                    properties:                                      matchExpressions:                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                        items:                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: key is the label key that the selector applies to.                                              type: string                                            operator:                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                              type: string                                            values:                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchLabels:                                        additionalProperties:                                          type: string                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                        type: object                                    type: object                                    x-kubernetes-map-type: atomic                                  namespaceSelector:                                    description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                    properties:                                      matchExpressions:                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                        items:                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                          properties:                                            key:                                              description: key is the label key that the selector applies to.                                              type: string                                            operator:                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                              type: string                                            values:                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                              items:                                                type: string                                              type: array                                          required:                                            - key                                            - operator                                          type: object                                        type: array                                      matchLabels:                                        additionalProperties:                                          type: string                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                        type: object                                    type: object                                    x-kubernetes-map-type: atomic                                  namespaces:                                    description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                    items:                                      type: string                                    type: array                                  topologyKey:                                    description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                    type: string                                required:                                  - topologyKey                                type: object                              weight:                                description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.                                format: int32                                type: integer                            required:                              - podAffinityTerm                              - weight                            type: object                          type: array                        requiredDuringSchedulingIgnoredDuringExecution:                          description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.                          items:                            description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running                            properties:                              labelSelector:                                description: A label query over a set of resources, in this case pods.                                properties:                                  matchExpressions:                                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                    items:                                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: key is the label key that the selector applies to.                                          type: string                                        operator:                                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                          type: string                                        values:                                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                  matchLabels:                                    additionalProperties:                                      type: string                                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                    type: object                                type: object                                x-kubernetes-map-type: atomic                              namespaceSelector:                                description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.                                properties:                                  matchExpressions:                                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                    items:                                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                      properties:                                        key:                                          description: key is the label key that the selector applies to.                                          type: string                                        operator:                                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                          type: string                                        values:                                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                          items:                                            type: string                                          type: array                                      required:                                        - key                                        - operator                                      type: object                                    type: array                                  matchLabels:                                    additionalProperties:                                      type: string                                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                    type: object                                type: object                                x-kubernetes-map-type: atomic                              namespaces:                                description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".                                items:                                  type: string                                type: array                              topologyKey:                                description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.                                type: string                            required:                              - topologyKey                            type: object                          type: array                      type: object                    tolerations:                      description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>                      items:                        description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.                        properties:                          effect:                            description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.                            type: string                          key:                            description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.                            type: string                          operator:                            description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.                            type: string                          tolerationSeconds:                            description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.                            format: int64                            type: integer                          value:                            description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.                            type: string                        type: object                      type: array                    topologySpreadConstraints:                      description: TopologySpreadConstraint specifies how to spread matching pods among the given topology                      items:                        description: TopologySpreadConstraint specifies how to spread matching pods among the given topology.                        properties:                          labelSelector:                            description: LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.                            properties:                              matchExpressions:                                description: matchExpressions is a list of label selector requirements. The requirements are ANDed.                                items:                                  description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.                                  properties:                                    key:                                      description: key is the label key that the selector applies to.                                      type: string                                    operator:                                      description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.                                      type: string                                    values:                                      description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.                                      items:                                        type: string                                      type: array                                  required:                                    - key                                    - operator                                  type: object                                type: array                              matchLabels:                                additionalProperties:                                  type: string                                description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.                                type: object                            type: object                            x-kubernetes-map-type: atomic                          matchLabelKeys:                            description: "MatchLabelKeys is a set of pod label keys to select the pods over which spreading will be calculated. The keys are used to lookup values from the incoming pod labels, those key-value labels are ANDed with labelSelector to select the group of existing pods over which spreading will be calculated for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when LabelSelector isn't set. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector. \n This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default)."                            items:                              type: string                            type: array                            x-kubernetes-list-type: atomic                          maxSkew:                            description: 'MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | |  P P  |  P P  |   P   | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It''s a required field. Default value is 1 and 0 is not allowed.'                            format: int32                            type: integer                          minDomains:                            description: "MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats \"global minimum\" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule. \n For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | |  P P  |  P P  |  P P  | The number of domains is less than 5(MinDomains), so \"global minimum\" is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew. \n This is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default)."                            format: int32                            type: integer                          nodeAffinityPolicy:                            description: "NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. \n If this value is nil, the behavior is equivalent to the Honor policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag."                            type: string                          nodeTaintsPolicy:                            description: "NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included. \n If this value is nil, the behavior is equivalent to the Ignore policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag."                            type: string                          topologyKey:                            description: TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each <key, value> as a "bucket", and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes meet the requirements of nodeAffinityPolicy and nodeTaintsPolicy. e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology. And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology. It's a required field.                            type: string                          whenUnsatisfiable:                            description: 'WhenUnsatisfiable indicates how to deal with a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered "Unsatisfiable" for an incoming pod if and only if every possible node assignment for that pod would violate "MaxSkew" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P |   P   |   P   | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won''t make it *more* imbalanced. It''s a required field.'                            type: string                        required:                          - maxSkew                          - topologyKey                          - whenUnsatisfiable                        type: object                      type: array                  type: object                  x-kubernetes-preserve-unknown-fields: true                priorityClassName:                  description: PriorityClassName sets priority class on the rbd mirror pods                  type: string                resources:                  description: The resource requirements for the rbd mirror pods                  nullable: true                  properties:                    claims:                      description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers."                      items:                        description: ResourceClaim references one entry in PodSpec.ResourceClaims.                        properties:                          name:                            description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.                            type: string                        required:                          - name                        type: object                      type: array                      x-kubernetes-list-map-keys:                        - name                      x-kubernetes-list-type: map                    limits:                      additionalProperties:                        anyOf:                          - type: integer                          - type: string                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                        x-kubernetes-int-or-string: true                      description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                      type: object                    requests:                      additionalProperties:                        anyOf:                          - type: integer                          - type: string                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$                        x-kubernetes-int-or-string: true                      description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'                      type: object                  type: object                  x-kubernetes-preserve-unknown-fields: true              required:                - count              type: object            status:              description: Status represents the status of an object              properties:                conditions:                  items:                    description: Condition represents a status condition on any Rook-Ceph Custom Resource.                    properties:                      lastHeartbeatTime:                        format: date-time                        type: string                      lastTransitionTime:                        format: date-time                        type: string                      message:                        type: string                      reason:                        description: ConditionReason is a reason for a condition                        type: string                      status:                        type: string                      type:                        description: ConditionType represent a resource's status                        type: string                    type: object                  type: array                observedGeneration:                  description: ObservedGeneration is the latest generation observed by the controller.                  format: int64                  type: integer                phase:                  type: string              type: object              x-kubernetes-preserve-unknown-fields: true          required:            - metadata            - spec          type: object      served: true      storage: true      subresources:        status: {}---# Source: rook-ceph/templates/resources.yamlapiVersion: apiextensions.k8s.io/v1kind: CustomResourceDefinitionmetadata:  name: objectbucketclaims.objectbucket.io  annotations:    helm.sh/resource-policy: keepspec:  group: objectbucket.io  names:    kind: ObjectBucketClaim    listKind: ObjectBucketClaimList    plural: objectbucketclaims    singular: objectbucketclaim    shortNames:      - obc      - obcs  scope: Namespaced  versions:    - name: v1alpha1      served: true      storage: true      schema:        openAPIV3Schema:          type: object          properties:            spec:              type: object              properties:                storageClassName:                  type: string                bucketName:                  type: string                generateBucketName:                  type: string                additionalConfig:                  type: object                  nullable: true                  x-kubernetes-preserve-unknown-fields: true                objectBucketName:                  type: string            status:              type: object              x-kubernetes-preserve-unknown-fields: true      subresources:        status: {}---# Source: rook-ceph/templates/resources.yamlapiVersion: apiextensions.k8s.io/v1kind: CustomResourceDefinitionmetadata:  name: objectbuckets.objectbucket.io  annotations:    helm.sh/resource-policy: keepspec:  group: objectbucket.io  names:    kind: ObjectBucket    listKind: ObjectBucketList    plural: objectbuckets    singular: objectbucket    shortNames:      - ob      - obs  scope: Cluster  versions:    - name: v1alpha1      served: true      storage: true      schema:        openAPIV3Schema:          type: object          properties:            spec:              type: object              properties:                storageClassName:                  type: string                endpoint:                  type: object                  nullable: true                  properties:                    bucketHost:                      type: string                    bucketPort:                      type: integer                      format: int32                    bucketName:                      type: string                    region:                      type: string                    subRegion:                      type: string                    additionalConfig:                      type: object                      nullable: true                      x-kubernetes-preserve-unknown-fields: true                authentication:                  type: object                  nullable: true                  items:                    type: object                    x-kubernetes-preserve-unknown-fields: true                additionalState:                  type: object                  nullable: true                  x-kubernetes-preserve-unknown-fields: true                reclaimPolicy:                  type: string                claimRef:                  type: object                  nullable: true                  x-kubernetes-preserve-unknown-fields: true            status:              type: object              x-kubernetes-preserve-unknown-fields: true      subresources:        status: {}---# Source: rook-ceph/templates/clusterrole.yamlkind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rook-ceph-system  labels:    operator: rook    storage-backend: ceph    app.kubernetes.io/part-of: rook-ceph-operator    app.kubernetes.io/managed-by: Helm    app.kubernetes.io/created-by: helm    helm.sh/chart: "rook-ceph-v1.12.3"rules:  # Most resources are represented by a string representation of their name, such as "pods", just as it appears in the URL for the relevant API endpoint.  # However, some Kubernetes APIs involve a "subresource", such as the logs for a pod. [...]  # To represent this in an RBAC role, use a slash to delimit the resource and subresource.  # https://kubernetes.io/docs/reference/access-authn-authz/rbac/#referring-to-resources  - apiGroups: [""]    resources: ["pods", "pods/log"]    verbs: ["get", "list"]  - apiGroups: [""]    resources: ["pods/exec"]    verbs: ["create"]  - apiGroups: ["admissionregistration.k8s.io"]    resources: ["validatingwebhookconfigurations"]    verbs: ["create", "get", "delete", "update"]  - apiGroups: ["csiaddons.openshift.io"]    resources: ["networkfences"]    verbs: ["create", "get", "update", "delete", "watch", "list"]  - apiGroups: ["apiextensions.k8s.io"]    resources: ["customresourcedefinitions"]    verbs: ["get"]---# Source: rook-ceph/templates/clusterrole.yaml# The cluster role for managing all the cluster-specific resources in a namespaceapiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata:  name: rook-ceph-cluster-mgmt  labels:    operator: rook    storage-backend: ceph    app.kubernetes.io/part-of: rook-ceph-operator    app.kubernetes.io/managed-by: Helm    app.kubernetes.io/created-by: helm    helm.sh/chart: "rook-ceph-v1.12.3"rules:- apiGroups:  - ""  - apps  - extensions  resources:  - secrets  - pods  - pods/log  - services  - configmaps  - deployments  - daemonsets  verbs:  - get  - list  - watch  - patch  - create  - update  - delete---# Source: rook-ceph/templates/clusterrole.yaml# The cluster role for managing the Rook CRDsapiVersion: rbac.authorization.k8s.io/v1# Rook watches for its CRDs in all namespaces, so this should be a cluster-scoped role unless the# operator config `ROOK_CURRENT_NAMESPACE_ONLY=true`.kind: ClusterRolemetadata:  name: rook-ceph-global  labels:    operator: rook    storage-backend: ceph    app.kubernetes.io/part-of: rook-ceph-operator    app.kubernetes.io/managed-by: Helm    app.kubernetes.io/created-by: helm    helm.sh/chart: "rook-ceph-v1.12.3"rules:- apiGroups:  - ""  resources:  # Pod access is needed for fencing  - pods  # Node access is needed for determining nodes where mons should run  - nodes  - nodes/proxy  - services  # Rook watches secrets which it uses to configure access to external resources.  # e.g., external Ceph cluster; TLS certificates for the admission controller or object store  - secrets  # Rook watches for changes to the rook-operator-config configmap  - configmaps  verbs:  - get  - list  - watch- apiGroups:  - ""  resources:  # Rook creates events for its custom resources  - events  # Rook creates PVs and PVCs for OSDs managed by the Rook provisioner  - persistentvolumes  - persistentvolumeclaims  # Rook creates endpoints for mgr and object store access  - endpoints  verbs:  - get  - list  - watch  - patch  - create  - update  - delete- apiGroups:  - storage.k8s.io  resources:  - storageclasses  verbs:  - get  - list  - watch- apiGroups:  - batch  resources:  - jobs  - cronjobs  verbs:  - get  - list  - watch  - create  - update  - delete  - deletecollection# The Rook operator must be able to watch all ceph.rook.io resources to reconcile them.- apiGroups: ["ceph.rook.io"]  resources:  - cephclients  - cephclusters  - cephblockpools  - cephfilesystems  - cephnfses  - cephobjectstores  - cephobjectstoreusers  - cephobjectrealms  - cephobjectzonegroups  - cephobjectzones  - cephbuckettopics  - cephbucketnotifications  - cephrbdmirrors  - cephfilesystemmirrors  - cephfilesystemsubvolumegroups  - cephblockpoolradosnamespaces  - cephcosidrivers  verbs:  - get  - list  - watch  # Ideally the update permission is not required, but Rook needs it to add finalizers to resources.  - update# Rook must have update access to status subresources for its custom resources.- apiGroups: ["ceph.rook.io"]  resources:  - cephclients/status  - cephclusters/status  - cephblockpools/status  - cephfilesystems/status  - cephnfses/status  - cephobjectstores/status  - cephobjectstoreusers/status  - cephobjectrealms/status  - cephobjectzonegroups/status  - cephobjectzones/status  - cephbuckettopics/status  - cephbucketnotifications/status  - cephrbdmirrors/status  - cephfilesystemmirrors/status  - cephfilesystemsubvolumegroups/status  - cephblockpoolradosnamespaces/status  verbs: ["update"]# The "*/finalizers" permission may need to be strictly given for K8s clusters where# OwnerReferencesPermissionEnforcement is enabled so that Rook can set blockOwnerDeletion on# resources owned by Rook CRs (e.g., a Secret owned by an OSD Deployment). See more:# https://kubernetes.io/docs/reference/access-authn-authz/_print/#ownerreferencespermissionenforcement- apiGroups: ["ceph.rook.io"]  resources:  - cephclients/finalizers  - cephclusters/finalizers  - cephblockpools/finalizers  - cephfilesystems/finalizers  - cephnfses/finalizers  - cephobjectstores/finalizers  - cephobjectstoreusers/finalizers  - cephobjectrealms/finalizers  - cephobjectzonegroups/finalizers  - cephobjectzones/finalizers  - cephbuckettopics/finalizers  - cephbucketnotifications/finalizers  - cephrbdmirrors/finalizers  - cephfilesystemmirrors/finalizers  - cephfilesystemsubvolumegroups/finalizers  - cephblockpoolradosnamespaces/finalizers  verbs: ["update"]- apiGroups:  - policy  - apps  - extensions  resources:  # This is for the clusterdisruption controller  - poddisruptionbudgets  # This is for both clusterdisruption and nodedrain controllers  - deployments  - replicasets  verbs:  - get  - list  - watch  - create  - update  - delete  - deletecollection- apiGroups:  - apps  resources:  # This is to add osd deployment owner ref on key rotation  # cron jobs.  - deployments/finalizers  verbs:  - update- apiGroups:  - healthchecking.openshift.io  resources:  - machinedisruptionbudgets  verbs:  - get  - list  - watch  - create  - update  - delete- apiGroups:  - machine.openshift.io  resources:  - machines  verbs:  - get  - list  - watch  - create  - update  - delete- apiGroups:  - storage.k8s.io  resources:  - csidrivers  verbs:  - create  - delete  - get  - update- apiGroups:  - k8s.cni.cncf.io  resources:  - network-attachment-definitions  verbs:  - get---# Source: rook-ceph/templates/clusterrole.yaml# Aspects of ceph-mgr that require cluster-wide accesskind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rook-ceph-mgr-cluster  labels:    operator: rook    storage-backend: ceph    app.kubernetes.io/part-of: rook-ceph-operator    app.kubernetes.io/managed-by: Helm    app.kubernetes.io/created-by: helm    helm.sh/chart: "rook-ceph-v1.12.3"rules:- apiGroups:  - ""  resources:  - configmaps  - nodes  - nodes/proxy  - persistentvolumes  verbs:  - get  - list  - watch- apiGroups:  - ""  resources:  - events  verbs:  - create  - patch  - list  - get  - watch- apiGroups:  - storage.k8s.io  resources:  - storageclasses  verbs:  - get  - list  - watch---# Source: rook-ceph/templates/clusterrole.yaml# Aspects of ceph-mgr that require access to the system namespacekind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rook-ceph-mgr-systemrules:- apiGroups:  - ""  resources:  - configmaps  verbs:  - get  - list  - watch---# Source: rook-ceph/templates/clusterrole.yaml# Used for provisioning ObjectBuckets (OBs) in response to ObjectBucketClaims (OBCs).# Note: Rook runs a copy of the lib-bucket-provisioner's OBC controller.# OBCs can be created in any Kubernetes namespace, so this must be a cluster-scoped role.kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rook-ceph-object-bucket  labels:    operator: rook    storage-backend: ceph    app.kubernetes.io/part-of: rook-ceph-operator    app.kubernetes.io/managed-by: Helm    app.kubernetes.io/created-by: helm    helm.sh/chart: "rook-ceph-v1.12.3"rules:  - apiGroups: [""]    resources: ["secrets", "configmaps"]    verbs:      # OBC controller creates secrets and configmaps containing information for users about how to      # connect to object buckets. It deletes them when an OBC is deleted.      - get      - create      - update      - delete  - apiGroups: ["storage.k8s.io"]    resources: ["storageclasses"]    verbs:      # OBC controller gets parameters from the OBC's storageclass      # Rook gets additional parameters from the OBC's storageclass      - get  - apiGroups: ["objectbucket.io"]    resources: ["objectbucketclaims"]    verbs:      # OBC controller needs to list/watch OBCs and get latest version of a reconciled OBC      - list      - watch      - get      # Ideally, update should not be needed, but the OBC controller updates the OBC with bucket      # information outside of the status subresource      - update      # OBC controller does not delete OBCs; users do this  - apiGroups: ["objectbucket.io"]    resources: ["objectbuckets"]    verbs:      # OBC controller needs to list/watch OBs and get latest version of a reconciled OB      - list      - watch      - get      # OBC controller creates an OB when an OBC's bucket has been provisioned by Ceph, updates them      # when an OBC is updated, and deletes them when the OBC is de-provisioned.      - create      - update      - delete  - apiGroups: ["objectbucket.io"]    resources: ["objectbucketclaims/status", "objectbuckets/status"]    verbs:      # OBC controller updates OBC and OB statuses      - update  - apiGroups: ["objectbucket.io"]    # This does not strictly allow the OBC/OB controllers to update finalizers. That is handled by    # the direct "update" permissions above. Instead, this allows Rook's controller to create    # resources which are owned by OBs/OBCs and where blockOwnerDeletion is set.    resources: ["objectbucketclaims/finalizers", "objectbuckets/finalizers"]    verbs:      - update---# Source: rook-ceph/templates/clusterrole.yamlkind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rook-ceph-osdrules:- apiGroups:  - ""  resources:  - nodes  verbs:  - get  - list---# Source: rook-ceph/templates/clusterrole.yaml# TODO: remove this, once https://github.com/rook/rook/issues/10141# is resolved.kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata:  name: cephfs-csi-nodepluginrules:  - apiGroups: [""]    resources: ["nodes"]    verbs: ["get"]---# Source: rook-ceph/templates/clusterrole.yamlkind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata:  name: cephfs-external-provisioner-runnerrules:  - apiGroups: [""]    resources: ["secrets"]    verbs: ["get", "list"]  - apiGroups: [""]    resources: ["nodes"]    verbs: ["get", "list", "watch"]  - apiGroups: [""]    resources: ["persistentvolumes"]    verbs: ["get", "list", "watch", "create", "delete", "patch"]  - apiGroups: [""]    resources: ["persistentvolumeclaims"]    verbs: ["get", "list", "watch", "patch", "update"]  - apiGroups: ["storage.k8s.io"]    resources: ["storageclasses"]    verbs: ["get", "list", "watch"]  - apiGroups: [""]    resources: ["events"]    verbs: ["list", "watch", "create", "update", "patch"]  - apiGroups: ["storage.k8s.io"]    resources: ["volumeattachments"]    verbs: ["get", "list", "watch", "patch"]  - apiGroups: ["storage.k8s.io"]    resources: ["volumeattachments/status"]    verbs: ["patch"]  - apiGroups: [""]    resources: ["persistentvolumeclaims/status"]    verbs: ["patch"]  - apiGroups: ["snapshot.storage.k8s.io"]    resources: ["volumesnapshots"]    verbs: ["get", "list"]  - apiGroups: ["snapshot.storage.k8s.io"]    resources: ["volumesnapshotclasses"]    verbs: ["get", "list", "watch"]  - apiGroups: ["snapshot.storage.k8s.io"]    resources: ["volumesnapshotcontents"]    verbs: [ "get", "list", "watch", "patch", "update"]  - apiGroups: ["snapshot.storage.k8s.io"]    resources: ["volumesnapshotcontents/status"]    verbs: ["update", "patch"]---# Source: rook-ceph/templates/clusterrole.yamlkind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rbd-csi-nodeplugin  labels:    operator: rook    storage-backend: ceph    app.kubernetes.io/part-of: rook-ceph-operator    app.kubernetes.io/managed-by: Helm    app.kubernetes.io/created-by: helm    helm.sh/chart: "rook-ceph-v1.12.3"rules:  - apiGroups: [""]    resources: ["secrets"]    verbs: ["get", "list"]  - apiGroups: [""]    resources: ["persistentvolumes"]    verbs: ["get", "list"]  - apiGroups: ["storage.k8s.io"]    resources: ["volumeattachments"]    verbs: ["get", "list"]  - apiGroups: [""]    resources: ["configmaps"]    verbs: ["get"]  - apiGroups: [""]    resources: ["serviceaccounts"]    verbs: ["get"]  - apiGroups: [""]    resources: ["serviceaccounts/token"]    verbs: ["create"]  - apiGroups: [""]    resources: ["nodes"]    verbs: ["get"]---# Source: rook-ceph/templates/clusterrole.yamlkind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rbd-external-provisioner-runnerrules:  - apiGroups: [""]    resources: ["secrets"]    verbs: ["get", "list", "watch"]  - apiGroups: [""]    resources: ["persistentvolumes"]    verbs: ["get", "list", "watch", "create", "delete", "patch"]  - apiGroups: [""]    resources: ["persistentvolumeclaims"]    verbs: ["get", "list", "watch", "update"]  - apiGroups: ["storage.k8s.io"]    resources: ["storageclasses"]    verbs: ["get", "list", "watch"]  - apiGroups: [""]    resources: ["events"]    verbs: ["list", "watch", "create", "update", "patch"]  - apiGroups: ["storage.k8s.io"]    resources: ["volumeattachments"]    verbs: ["get", "list", "watch", "patch"]  - apiGroups: ["storage.k8s.io"]    resources: ["volumeattachments/status"]    verbs: ["patch"]  - apiGroups: [""]    resources: ["nodes"]    verbs: ["get", "list", "watch"]  - apiGroups: ["storage.k8s.io"]    resources: ["csinodes"]    verbs: ["get", "list", "watch"]  - apiGroups: [""]    resources: ["persistentvolumeclaims/status"]    verbs: ["patch"]  - apiGroups: ["snapshot.storage.k8s.io"]    resources: ["volumesnapshots"]    verbs: ["get", "list", "watch"]  - apiGroups: ["snapshot.storage.k8s.io"]    resources: ["volumesnapshotclasses"]    verbs: ["get", "list", "watch"]  - apiGroups: ["snapshot.storage.k8s.io"]    resources: ["volumesnapshotcontents"]    verbs: [ "get", "list", "watch", "patch", "update"]  - apiGroups: ["snapshot.storage.k8s.io"]    resources: ["volumesnapshotcontents/status"]    verbs: ["update", "patch"]  - apiGroups: [""]    resources: ["configmaps"]    verbs: ["get"]  - apiGroups: [""]    resources: ["serviceaccounts"]    verbs: ["get"]  - apiGroups: [""]    resources: ["serviceaccounts/token"]    verbs: ["create"]  - apiGroups: [""]    resources: ["nodes"]    verbs: ["get", "list", "watch"]  - apiGroups: ["storage.k8s.io"]    resources: ["csinodes"]    verbs: ["get", "list", "watch"]---# Source: rook-ceph/templates/clusterrole.yamlkind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata:  name: objectstorage-provisioner-role  labels:    app.kubernetes.io/part-of: container-object-storage-interface    app.kubernetes.io/component: driver-ceph    app.kubernetes.io/name: cosi-driver-cephrules:  - apiGroups: ["objectstorage.k8s.io"]    resources:      [        "buckets",        "bucketaccesses",        "bucketclaims",        "bucketaccessclasses",        "buckets/status",        "bucketaccesses/status",        "bucketclaims/status",        "bucketaccessclasses/status",      ]    verbs: ["get", "list", "watch", "update", "create", "delete"]  - apiGroups: ["coordination.k8s.io"]    resources: ["leases"]    verbs: ["get", "watch", "list", "delete", "update", "create"]  - apiGroups: [""]    resources: ["secrets", "events"]    verbs: ["get", "delete", "update", "create"]---# Source: rook-ceph/templates/cluster-rbac.yaml# Allow the ceph mgr to access cluster-wide resources necessary for the mgr moduleskind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rook-ceph-mgr-clusterroleRef:  apiGroup: rbac.authorization.k8s.io  kind: ClusterRole  name: rook-ceph-mgr-clustersubjects:  - kind: ServiceAccount    name: rook-ceph-mgr    namespace: aleph-ns # namespace:cluster---# Source: rook-ceph/templates/cluster-rbac.yaml# Allow the ceph osd to access cluster-wide resources necessary for determining their topology locationkind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rook-ceph-osdroleRef:  apiGroup: rbac.authorization.k8s.io  kind: ClusterRole  name: rook-ceph-osdsubjects:  - kind: ServiceAccount    name: rook-ceph-osd    namespace: aleph-ns # namespace:cluster---# Source: rook-ceph/templates/clusterrolebinding.yamlkind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rook-ceph-system  labels:    operator: rook    storage-backend: ceph    app.kubernetes.io/part-of: rook-ceph-operator    app.kubernetes.io/managed-by: Helm    app.kubernetes.io/created-by: helm    helm.sh/chart: "rook-ceph-v1.12.3"roleRef:  apiGroup: rbac.authorization.k8s.io  kind: ClusterRole  name: rook-ceph-systemsubjects:  - kind: ServiceAccount    name: rook-ceph-system    namespace: aleph-ns # namespace:operator---# Source: rook-ceph/templates/clusterrolebinding.yaml# Grant the rook system daemons cluster-wide access to manage the Rook CRDs, PVCs, and storage classeskind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rook-ceph-global  labels:    operator: rook    storage-backend: ceph    app.kubernetes.io/part-of: rook-ceph-operator    app.kubernetes.io/managed-by: Helm    app.kubernetes.io/created-by: helm    helm.sh/chart: "rook-ceph-v1.12.3"roleRef:  apiGroup: rbac.authorization.k8s.io  kind: ClusterRole  name: rook-ceph-globalsubjects:- kind: ServiceAccount  name: rook-ceph-system  namespace: aleph-ns # namespace:operator---# Source: rook-ceph/templates/clusterrolebinding.yamlkind: ClusterRoleBinding# Give Rook-Ceph Operator permissions to provision ObjectBuckets in response to ObjectBucketClaims.apiVersion: rbac.authorization.k8s.io/v1metadata:  name: rook-ceph-object-bucketroleRef:  apiGroup: rbac.authorization.k8s.io  kind: ClusterRole  name: rook-ceph-object-bucketsubjects:  - kind: ServiceAccount    name: rook-ceph-system    namespace: aleph-ns # namespace:operator---# Source: rook-ceph/templates/clusterrolebinding.yamlkind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rbd-csi-nodepluginsubjects:  - kind: ServiceAccount    name: rook-csi-rbd-plugin-sa    namespace: aleph-ns # namespace:operatorroleRef:  kind: ClusterRole  name: rbd-csi-nodeplugin  apiGroup: rbac.authorization.k8s.io---# Source: rook-ceph/templates/clusterrolebinding.yamlkind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:  name: cephfs-csi-provisioner-rolesubjects:  - kind: ServiceAccount    name: rook-csi-cephfs-provisioner-sa    namespace: aleph-ns # namespace:operatorroleRef:  kind: ClusterRole  name: cephfs-external-provisioner-runner  apiGroup: rbac.authorization.k8s.io---# Source: rook-ceph/templates/clusterrolebinding.yaml# This is required by operator-sdk to map the cluster/clusterrolebindings with SA# otherwise operator-sdk will create a individual file for these.kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:  name: cephfs-csi-nodeplugin-rolesubjects:  - kind: ServiceAccount    name: rook-csi-cephfs-plugin-sa    namespace: aleph-ns # namespace:operatorroleRef:  kind: ClusterRole  name: cephfs-csi-nodeplugin  apiGroup: rbac.authorization.k8s.io---# Source: rook-ceph/templates/clusterrolebinding.yamlkind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rbd-csi-provisioner-rolesubjects:  - kind: ServiceAccount    name: rook-csi-rbd-provisioner-sa    namespace: aleph-ns # namespace:operatorroleRef:  kind: ClusterRole  name: rbd-external-provisioner-runner  apiGroup: rbac.authorization.k8s.io---# Source: rook-ceph/templates/clusterrolebinding.yaml# RBAC for ceph cosi driver service accountkind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:  name: objectstorage-provisioner-role-binding  labels:    app.kubernetes.io/part-of: container-object-storage-interface    app.kubernetes.io/component: driver-ceph    app.kubernetes.io/name: cosi-driver-cephsubjects:  - kind: ServiceAccount    name: objectstorage-provisioner    namespace: aleph-ns # namespace:operatorroleRef:  kind: ClusterRole  name: objectstorage-provisioner-role  apiGroup: rbac.authorization.k8s.io---# Source: rook-ceph/templates/cluster-rbac.yamlkind: RoleapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rook-ceph-osd  namespace: aleph-ns # namespace:clusterrules:  # this is needed for rook's "key-management" CLI to fetch the vault token from the secret when  # validating the connection details and for key rotation operations.  - apiGroups: [""]    resources: ["secrets"]    verbs: ["get","update"]  - apiGroups: [""]    resources: ["configmaps"]    verbs: ["get", "list", "watch", "create", "update", "delete"]  - apiGroups: ["ceph.rook.io"]    resources: ["cephclusters", "cephclusters/finalizers"]    verbs: ["get", "list", "create", "update", "delete"]---# Source: rook-ceph/templates/cluster-rbac.yamlkind: RoleapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rook-ceph-rgw  namespace: aleph-ns # namespace:clusterrules:  # Placeholder role so the rgw service account will  # be generated in the csv. Remove this role and role binding  # when fixing https://github.com/rook/rook/issues/10141.  - apiGroups:      - ""    resources:      - configmaps    verbs:      - get---# Source: rook-ceph/templates/cluster-rbac.yaml# Aspects of ceph-mgr that operate within the cluster's namespacekind: RoleapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rook-ceph-mgr  namespace: aleph-ns # namespace:clusterrules:  - apiGroups:      - ""    resources:      - pods      - services      - pods/log    verbs:      - get      - list      - watch      - create      - update      - delete  - apiGroups:      - batch    resources:      - jobs    verbs:      - get      - list      - watch      - create      - update      - delete  - apiGroups:      - ceph.rook.io    resources:      - cephclients      - cephclusters      - cephblockpools      - cephfilesystems      - cephnfses      - cephobjectstores      - cephobjectstoreusers      - cephobjectrealms      - cephobjectzonegroups      - cephobjectzones      - cephbuckettopics      - cephbucketnotifications      - cephrbdmirrors      - cephfilesystemmirrors      - cephfilesystemsubvolumegroups      - cephblockpoolradosnamespaces      - cephcosidrivers    verbs:      - get      - list      - watch      - create      - update      - delete      - patch  - apiGroups:      - apps    resources:      - deployments/scale      - deployments    verbs:      - patch      - delete  - apiGroups:      - ''    resources:      - persistentvolumeclaims    verbs:      - delete---# Source: rook-ceph/templates/cluster-rbac.yamlkind: RoleapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rook-ceph-cmd-reporter  namespace: aleph-ns # namespace:clusterrules:  - apiGroups:      - ""    resources:      - pods      - configmaps    verbs:      - get      - list      - watch      - create      - update      - delete---# Source: rook-ceph/templates/cluster-rbac.yaml# Aspects of ceph osd purge job that require access to the cluster namespacekind: RoleapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rook-ceph-purge-osd  namespace: aleph-ns # namespace:clusterrules:  - apiGroups: [""]    resources: ["configmaps"]    verbs: ["get"]  - apiGroups: ["apps"]    resources: ["deployments"]    verbs: ["get", "delete" ]  - apiGroups: ["batch"]    resources: ["jobs"]    verbs: ["get", "list", "delete" ]  - apiGroups: [""]    resources: ["persistentvolumeclaims"]    verbs: ["get", "update", "delete", "list"]---# Source: rook-ceph/templates/role.yaml# Allow the operator to manage resources in its own namespaceapiVersion: rbac.authorization.k8s.io/v1kind: Rolemetadata:  name: rook-ceph-system  namespace: aleph-ns # namespace:operator  labels:    operator: rook    storage-backend: ceph    app.kubernetes.io/part-of: rook-ceph-operator    app.kubernetes.io/managed-by: Helm    app.kubernetes.io/created-by: helm    helm.sh/chart: "rook-ceph-v1.12.3"rules:- apiGroups:  - ""  resources:  - pods  - configmaps  - services  verbs:  - get  - list  - watch  - patch  - create  - update  - delete- apiGroups:  - apps  - extensions  resources:  - daemonsets  - statefulsets  - deployments  verbs:  - get  - list  - watch  - create  - update  - delete  - deletecollection- apiGroups:  - batch  resources:  - cronjobs  verbs:  - delete- apiGroups:  - cert-manager.io  resources:  - certificates  - issuers  verbs:  - get  - create  - delete- apiGroups:  - multicluster.x-k8s.io  resources:  - serviceexports  verbs:  - get  - create---# Source: rook-ceph/templates/role.yamlkind: RoleapiVersion: rbac.authorization.k8s.io/v1metadata:  name: cephfs-external-provisioner-cfg  namespace: aleph-ns # namespace:operatorrules:  - apiGroups: ["coordination.k8s.io"]    resources: ["leases"]    verbs: ["get", "watch", "list", "delete", "update", "create"]---# Source: rook-ceph/templates/role.yamlkind: RoleapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rbd-external-provisioner-cfg  namespace: aleph-ns # namespace:operatorrules:  - apiGroups: ["coordination.k8s.io"]    resources: ["leases"]    verbs: ["get", "watch", "list", "delete", "update", "create"]---# Source: rook-ceph/templates/cluster-rbac.yaml# Allow the operator to create resources in this cluster's namespacekind: RoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rook-ceph-cluster-mgmt  namespace: aleph-ns # namespace:clusterroleRef:  apiGroup: rbac.authorization.k8s.io  kind: ClusterRole  name: rook-ceph-cluster-mgmtsubjects:  - kind: ServiceAccount    name: rook-ceph-system    namespace: aleph-ns # namespace:operator---# Source: rook-ceph/templates/cluster-rbac.yaml# Allow the osd pods in this namespace to work with configmapskind: RoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rook-ceph-osd  namespace: aleph-ns # namespace:clusterroleRef:  apiGroup: rbac.authorization.k8s.io  kind: Role  name: rook-ceph-osdsubjects:  - kind: ServiceAccount    name: rook-ceph-osd    namespace: aleph-ns # namespace:cluster---# Source: rook-ceph/templates/cluster-rbac.yaml# Allow the rgw pods in this namespace to work with configmapskind: RoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rook-ceph-rgw  namespace: aleph-ns # namespace:clusterroleRef:  apiGroup: rbac.authorization.k8s.io  kind: Role  name: rook-ceph-rgwsubjects:  - kind: ServiceAccount    name: rook-ceph-rgw    namespace: aleph-ns # namespace:cluster---# Source: rook-ceph/templates/cluster-rbac.yaml# Allow the ceph mgr to access resources scoped to the CephCluster namespace necessary for mgr moduleskind: RoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rook-ceph-mgr  namespace: aleph-ns # namespace:clusterroleRef:  apiGroup: rbac.authorization.k8s.io  kind: Role  name: rook-ceph-mgrsubjects:  - kind: ServiceAccount    name: rook-ceph-mgr    namespace: aleph-ns # namespace:cluster---# Source: rook-ceph/templates/cluster-rbac.yaml# Allow the ceph mgr to access resources in the Rook operator namespace necessary for mgr moduleskind: RoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rook-ceph-mgr-system  namespace: aleph-ns # namespace:operatorroleRef:  apiGroup: rbac.authorization.k8s.io  kind: ClusterRole  name: rook-ceph-mgr-systemsubjects:  - kind: ServiceAccount    name: rook-ceph-mgr    namespace: aleph-ns # namespace:cluster---# Source: rook-ceph/templates/cluster-rbac.yamlkind: RoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rook-ceph-cmd-reporter  namespace: aleph-ns # namespace:clusterroleRef:  apiGroup: rbac.authorization.k8s.io  kind: Role  name: rook-ceph-cmd-reportersubjects:  - kind: ServiceAccount    name: rook-ceph-cmd-reporter    namespace: aleph-ns # namespace:cluster---# Source: rook-ceph/templates/cluster-rbac.yaml# Allow the osd purge job to run in this namespacekind: RoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rook-ceph-purge-osd  namespace: aleph-ns # namespace:clusterroleRef:  apiGroup: rbac.authorization.k8s.io  kind: Role  name: rook-ceph-purge-osdsubjects:  - kind: ServiceAccount    name: rook-ceph-purge-osd    namespace: aleph-ns # namespace:cluster---# Source: rook-ceph/templates/rolebinding.yaml# Grant the operator, agent, and discovery agents access to resources in the rook-ceph-system namespacekind: RoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rook-ceph-system  namespace: aleph-ns # namespace:operator  labels:    operator: rook    storage-backend: ceph    app.kubernetes.io/part-of: rook-ceph-operator    app.kubernetes.io/managed-by: Helm    app.kubernetes.io/created-by: helm    helm.sh/chart: "rook-ceph-v1.12.3"roleRef:  apiGroup: rbac.authorization.k8s.io  kind: Role  name: rook-ceph-systemsubjects:- kind: ServiceAccount  name: rook-ceph-system  namespace: aleph-ns # namespace:operator---# Source: rook-ceph/templates/rolebinding.yamlkind: RoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:  name: cephfs-csi-provisioner-role-cfg  namespace: aleph-ns # namespace:operatorsubjects:  - kind: ServiceAccount    name: rook-csi-cephfs-provisioner-sa    namespace: aleph-ns # namespace:operatorroleRef:  kind: Role  name: cephfs-external-provisioner-cfg  apiGroup: rbac.authorization.k8s.io---# Source: rook-ceph/templates/rolebinding.yamlkind: RoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:  name: rbd-csi-provisioner-role-cfg  namespace: aleph-ns # namespace:operatorsubjects:  - kind: ServiceAccount    name: rook-csi-rbd-provisioner-sa    namespace: aleph-ns # namespace:operatorroleRef:  kind: Role  name: rbd-external-provisioner-cfg  apiGroup: rbac.authorization.k8s.io---# Source: rook-ceph/templates/deployment.yamlapiVersion: apps/v1kind: Deploymentmetadata:  name: rook-ceph-operator  labels:    operator: rook    storage-backend: ceph    app.kubernetes.io/part-of: rook-ceph-operator    app.kubernetes.io/managed-by: Helm    app.kubernetes.io/created-by: helm    helm.sh/chart: "rook-ceph-v1.12.3"spec:  replicas: 1  selector:    matchLabels:      app: rook-ceph-operator  strategy:    type: Recreate  template:    metadata:      labels:        app: rook-ceph-operator        helm.sh/chart: "rook-ceph-v1.12.3"    spec:      containers:      - name: rook-ceph-operator        image: "rook/ceph:v1.12.3"        imagePullPolicy: IfNotPresent        args: ["ceph", "operator"]        securityContext:          runAsNonRoot: true          runAsUser: 2016          runAsGroup: 2016        volumeMounts:        - mountPath: /var/lib/rook          name: rook-config        - mountPath: /etc/ceph          name: default-config-dir        - mountPath: /etc/webhook          name: webhook-cert        ports:          - containerPort: 9443            name: https-webhook            protocol: TCP        env:        - name: ROOK_CURRENT_NAMESPACE_ONLY          value: "false"        - name: ROOK_HOSTPATH_REQUIRES_PRIVILEGED          value: "false"        - name: ROOK_DISABLE_DEVICE_HOTPLUG          value: "false"        - name: DISCOVER_DAEMON_UDEV_BLACKLIST          value: ""        - name: ROOK_ENABLE_DISCOVERY_DAEMON          value: "false"        - name: NODE_NAME          valueFrom:            fieldRef:              fieldPath: spec.nodeName        - name: POD_NAME          valueFrom:            fieldRef:              fieldPath: metadata.name        - name: POD_NAMESPACE          valueFrom:            fieldRef:              fieldPath: metadata.namespace        resources:          limits:            cpu: 500m            memory: 512Mi          requests:            cpu: 100m            memory: 128Mi      serviceAccountName: rook-ceph-system      volumes:      - name: rook-config        emptyDir: {}      - name: default-config-dir        emptyDir: {}      - name: webhook-cert        emptyDir: {}---# Source: rook-ceph/templates/securityContextConstraints.yaml# scc for the Rook and Ceph daemons# for creating cluster in openshift
 |