cluster_service.proto 167 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553
  1. // Copyright 2022 Google LLC
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. syntax = "proto3";
  15. package google.container.v1;
  16. import "google/api/annotations.proto";
  17. import "google/api/client.proto";
  18. import "google/api/field_behavior.proto";
  19. import "google/api/resource.proto";
  20. import "google/protobuf/duration.proto";
  21. import "google/protobuf/empty.proto";
  22. import "google/protobuf/timestamp.proto";
  23. import "google/protobuf/wrappers.proto";
  24. import "google/rpc/code.proto";
  25. import "google/rpc/status.proto";
  26. option csharp_namespace = "Google.Cloud.Container.V1";
  27. option go_package = "google.golang.org/genproto/googleapis/container/v1;container";
  28. option java_multiple_files = true;
  29. option java_outer_classname = "ClusterServiceProto";
  30. option java_package = "com.google.container.v1";
  31. option php_namespace = "Google\\Cloud\\Container\\V1";
  32. option ruby_package = "Google::Cloud::Container::V1";
  33. option (google.api.resource_definition) = {
  34. type: "pubsub.googleapis.com/Topic"
  35. pattern: "projects/{project}/topics/{topic}"
  36. };
  37. // Google Kubernetes Engine Cluster Manager v1
  38. service ClusterManager {
  39. option (google.api.default_host) = "container.googleapis.com";
  40. option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
  41. // Lists all clusters owned by a project in either the specified zone or all
  42. // zones.
  43. rpc ListClusters(ListClustersRequest) returns (ListClustersResponse) {
  44. option (google.api.http) = {
  45. get: "/v1/{parent=projects/*/locations/*}/clusters"
  46. additional_bindings {
  47. get: "/v1/projects/{project_id}/zones/{zone}/clusters"
  48. }
  49. };
  50. option (google.api.method_signature) = "project_id,zone";
  51. option (google.api.method_signature) = "parent";
  52. }
  53. // Gets the details of a specific cluster.
  54. rpc GetCluster(GetClusterRequest) returns (Cluster) {
  55. option (google.api.http) = {
  56. get: "/v1/{name=projects/*/locations/*/clusters/*}"
  57. additional_bindings {
  58. get: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}"
  59. }
  60. };
  61. option (google.api.method_signature) = "project_id,zone,cluster_id";
  62. option (google.api.method_signature) = "name";
  63. }
  64. // Creates a cluster, consisting of the specified number and type of Google
  65. // Compute Engine instances.
  66. //
  67. // By default, the cluster is created in the project's
  68. // [default
  69. // network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks).
  70. //
  71. // One firewall is added for the cluster. After cluster creation,
  72. // the Kubelet creates routes for each node to allow the containers
  73. // on that node to communicate with all other instances in the
  74. // cluster.
  75. //
  76. // Finally, an entry is added to the project's global metadata indicating
  77. // which CIDR range the cluster is using.
  78. rpc CreateCluster(CreateClusterRequest) returns (Operation) {
  79. option (google.api.http) = {
  80. post: "/v1/{parent=projects/*/locations/*}/clusters"
  81. body: "*"
  82. additional_bindings {
  83. post: "/v1/projects/{project_id}/zones/{zone}/clusters"
  84. body: "*"
  85. }
  86. };
  87. option (google.api.method_signature) = "project_id,zone,cluster";
  88. option (google.api.method_signature) = "parent,cluster";
  89. }
  90. // Updates the settings of a specific cluster.
  91. rpc UpdateCluster(UpdateClusterRequest) returns (Operation) {
  92. option (google.api.http) = {
  93. put: "/v1/{name=projects/*/locations/*/clusters/*}"
  94. body: "*"
  95. additional_bindings {
  96. put: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}"
  97. body: "*"
  98. }
  99. };
  100. option (google.api.method_signature) = "project_id,zone,cluster_id,update";
  101. option (google.api.method_signature) = "name,update";
  102. }
  103. // Updates the version and/or image type for the specified node pool.
  104. rpc UpdateNodePool(UpdateNodePoolRequest) returns (Operation) {
  105. option (google.api.http) = {
  106. put: "/v1/{name=projects/*/locations/*/clusters/*/nodePools/*}"
  107. body: "*"
  108. additional_bindings {
  109. post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/nodePools/{node_pool_id}/update"
  110. body: "*"
  111. }
  112. };
  113. }
  114. // Sets the autoscaling settings for the specified node pool.
  115. rpc SetNodePoolAutoscaling(SetNodePoolAutoscalingRequest) returns (Operation) {
  116. option (google.api.http) = {
  117. post: "/v1/{name=projects/*/locations/*/clusters/*/nodePools/*}:setAutoscaling"
  118. body: "*"
  119. additional_bindings {
  120. post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/nodePools/{node_pool_id}/autoscaling"
  121. body: "*"
  122. }
  123. };
  124. }
  125. // Sets the logging service for a specific cluster.
  126. rpc SetLoggingService(SetLoggingServiceRequest) returns (Operation) {
  127. option (google.api.http) = {
  128. post: "/v1/{name=projects/*/locations/*/clusters/*}:setLogging"
  129. body: "*"
  130. additional_bindings {
  131. post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/logging"
  132. body: "*"
  133. }
  134. };
  135. option (google.api.method_signature) = "project_id,zone,cluster_id,logging_service";
  136. option (google.api.method_signature) = "name,logging_service";
  137. }
  138. // Sets the monitoring service for a specific cluster.
  139. rpc SetMonitoringService(SetMonitoringServiceRequest) returns (Operation) {
  140. option (google.api.http) = {
  141. post: "/v1/{name=projects/*/locations/*/clusters/*}:setMonitoring"
  142. body: "*"
  143. additional_bindings {
  144. post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/monitoring"
  145. body: "*"
  146. }
  147. };
  148. option (google.api.method_signature) = "project_id,zone,cluster_id,monitoring_service";
  149. option (google.api.method_signature) = "name,monitoring_service";
  150. }
  151. // Sets the addons for a specific cluster.
  152. rpc SetAddonsConfig(SetAddonsConfigRequest) returns (Operation) {
  153. option (google.api.http) = {
  154. post: "/v1/{name=projects/*/locations/*/clusters/*}:setAddons"
  155. body: "*"
  156. additional_bindings {
  157. post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/addons"
  158. body: "*"
  159. }
  160. };
  161. option (google.api.method_signature) = "project_id,zone,cluster_id,addons_config";
  162. option (google.api.method_signature) = "name,addons_config";
  163. }
  164. // Sets the locations for a specific cluster.
  165. // Deprecated. Use
  166. // [projects.locations.clusters.update](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters/update)
  167. // instead.
  168. rpc SetLocations(SetLocationsRequest) returns (Operation) {
  169. option deprecated = true;
  170. option (google.api.http) = {
  171. post: "/v1/{name=projects/*/locations/*/clusters/*}:setLocations"
  172. body: "*"
  173. additional_bindings {
  174. post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/locations"
  175. body: "*"
  176. }
  177. };
  178. option (google.api.method_signature) = "project_id,zone,cluster_id,locations";
  179. option (google.api.method_signature) = "name,locations";
  180. }
  181. // Updates the master for a specific cluster.
  182. rpc UpdateMaster(UpdateMasterRequest) returns (Operation) {
  183. option (google.api.http) = {
  184. post: "/v1/{name=projects/*/locations/*/clusters/*}:updateMaster"
  185. body: "*"
  186. additional_bindings {
  187. post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/master"
  188. body: "*"
  189. }
  190. };
  191. option (google.api.method_signature) = "project_id,zone,cluster_id,master_version";
  192. option (google.api.method_signature) = "name,master_version";
  193. }
  194. // Sets master auth materials. Currently supports changing the admin password
  195. // or a specific cluster, either via password generation or explicitly setting
  196. // the password.
  197. rpc SetMasterAuth(SetMasterAuthRequest) returns (Operation) {
  198. option (google.api.http) = {
  199. post: "/v1/{name=projects/*/locations/*/clusters/*}:setMasterAuth"
  200. body: "*"
  201. additional_bindings {
  202. post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}:setMasterAuth"
  203. body: "*"
  204. }
  205. };
  206. }
  207. // Deletes the cluster, including the Kubernetes endpoint and all worker
  208. // nodes.
  209. //
  210. // Firewalls and routes that were configured during cluster creation
  211. // are also deleted.
  212. //
  213. // Other Google Compute Engine resources that might be in use by the cluster,
  214. // such as load balancer resources, are not deleted if they weren't present
  215. // when the cluster was initially created.
  216. rpc DeleteCluster(DeleteClusterRequest) returns (Operation) {
  217. option (google.api.http) = {
  218. delete: "/v1/{name=projects/*/locations/*/clusters/*}"
  219. additional_bindings {
  220. delete: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}"
  221. }
  222. };
  223. option (google.api.method_signature) = "project_id,zone,cluster_id";
  224. option (google.api.method_signature) = "name";
  225. }
  226. // Lists all operations in a project in a specific zone or all zones.
  227. rpc ListOperations(ListOperationsRequest) returns (ListOperationsResponse) {
  228. option (google.api.http) = {
  229. get: "/v1/{parent=projects/*/locations/*}/operations"
  230. additional_bindings {
  231. get: "/v1/projects/{project_id}/zones/{zone}/operations"
  232. }
  233. };
  234. option (google.api.method_signature) = "project_id,zone";
  235. }
  236. // Gets the specified operation.
  237. rpc GetOperation(GetOperationRequest) returns (Operation) {
  238. option (google.api.http) = {
  239. get: "/v1/{name=projects/*/locations/*/operations/*}"
  240. additional_bindings {
  241. get: "/v1/projects/{project_id}/zones/{zone}/operations/{operation_id}"
  242. }
  243. };
  244. option (google.api.method_signature) = "project_id,zone,operation_id";
  245. option (google.api.method_signature) = "name";
  246. }
  247. // Cancels the specified operation.
  248. rpc CancelOperation(CancelOperationRequest) returns (google.protobuf.Empty) {
  249. option (google.api.http) = {
  250. post: "/v1/{name=projects/*/locations/*/operations/*}:cancel"
  251. body: "*"
  252. additional_bindings {
  253. post: "/v1/projects/{project_id}/zones/{zone}/operations/{operation_id}:cancel"
  254. body: "*"
  255. }
  256. };
  257. option (google.api.method_signature) = "project_id,zone,operation_id";
  258. option (google.api.method_signature) = "name";
  259. }
  260. // Returns configuration info about the Google Kubernetes Engine service.
  261. rpc GetServerConfig(GetServerConfigRequest) returns (ServerConfig) {
  262. option (google.api.http) = {
  263. get: "/v1/{name=projects/*/locations/*}/serverConfig"
  264. additional_bindings {
  265. get: "/v1/projects/{project_id}/zones/{zone}/serverconfig"
  266. }
  267. };
  268. option (google.api.method_signature) = "project_id,zone";
  269. option (google.api.method_signature) = "name";
  270. }
  271. // Gets the public component of the cluster signing keys in
  272. // JSON Web Key format.
  273. // This API is not yet intended for general use, and is not available for all
  274. // clusters.
  275. rpc GetJSONWebKeys(GetJSONWebKeysRequest) returns (GetJSONWebKeysResponse) {
  276. option (google.api.http) = {
  277. get: "/v1/{parent=projects/*/locations/*/clusters/*}/jwks"
  278. };
  279. }
  280. // Lists the node pools for a cluster.
  281. rpc ListNodePools(ListNodePoolsRequest) returns (ListNodePoolsResponse) {
  282. option (google.api.http) = {
  283. get: "/v1/{parent=projects/*/locations/*/clusters/*}/nodePools"
  284. additional_bindings {
  285. get: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/nodePools"
  286. }
  287. };
  288. option (google.api.method_signature) = "project_id,zone,cluster_id";
  289. option (google.api.method_signature) = "parent";
  290. }
  291. // Retrieves the requested node pool.
  292. rpc GetNodePool(GetNodePoolRequest) returns (NodePool) {
  293. option (google.api.http) = {
  294. get: "/v1/{name=projects/*/locations/*/clusters/*/nodePools/*}"
  295. additional_bindings {
  296. get: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/nodePools/{node_pool_id}"
  297. }
  298. };
  299. option (google.api.method_signature) = "project_id,zone,cluster_id,node_pool_id";
  300. option (google.api.method_signature) = "name";
  301. }
  302. // Creates a node pool for a cluster.
  303. rpc CreateNodePool(CreateNodePoolRequest) returns (Operation) {
  304. option (google.api.http) = {
  305. post: "/v1/{parent=projects/*/locations/*/clusters/*}/nodePools"
  306. body: "*"
  307. additional_bindings {
  308. post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/nodePools"
  309. body: "*"
  310. }
  311. };
  312. option (google.api.method_signature) = "project_id,zone,cluster_id,node_pool";
  313. option (google.api.method_signature) = "parent,node_pool";
  314. }
  315. // Deletes a node pool from a cluster.
  316. rpc DeleteNodePool(DeleteNodePoolRequest) returns (Operation) {
  317. option (google.api.http) = {
  318. delete: "/v1/{name=projects/*/locations/*/clusters/*/nodePools/*}"
  319. additional_bindings {
  320. delete: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/nodePools/{node_pool_id}"
  321. }
  322. };
  323. option (google.api.method_signature) = "project_id,zone,cluster_id,node_pool_id";
  324. option (google.api.method_signature) = "name";
  325. }
  326. // CompleteNodePoolUpgrade will signal an on-going node pool upgrade to
  327. // complete.
  328. rpc CompleteNodePoolUpgrade(CompleteNodePoolUpgradeRequest) returns (google.protobuf.Empty) {
  329. option (google.api.http) = {
  330. post: "/v1/{name=projects/*/locations/*/clusters/*/nodePools/*}:completeUpgrade"
  331. body: "*"
  332. };
  333. }
  334. // Rolls back a previously Aborted or Failed NodePool upgrade.
  335. // This makes no changes if the last upgrade successfully completed.
  336. rpc RollbackNodePoolUpgrade(RollbackNodePoolUpgradeRequest) returns (Operation) {
  337. option (google.api.http) = {
  338. post: "/v1/{name=projects/*/locations/*/clusters/*/nodePools/*}:rollback"
  339. body: "*"
  340. additional_bindings {
  341. post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/nodePools/{node_pool_id}:rollback"
  342. body: "*"
  343. }
  344. };
  345. option (google.api.method_signature) = "project_id,zone,cluster_id,node_pool_id";
  346. option (google.api.method_signature) = "name";
  347. }
  348. // Sets the NodeManagement options for a node pool.
  349. rpc SetNodePoolManagement(SetNodePoolManagementRequest) returns (Operation) {
  350. option (google.api.http) = {
  351. post: "/v1/{name=projects/*/locations/*/clusters/*/nodePools/*}:setManagement"
  352. body: "*"
  353. additional_bindings {
  354. post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/nodePools/{node_pool_id}/setManagement"
  355. body: "*"
  356. }
  357. };
  358. }
  359. // Sets labels on a cluster.
  360. rpc SetLabels(SetLabelsRequest) returns (Operation) {
  361. option (google.api.http) = {
  362. post: "/v1/{name=projects/*/locations/*/clusters/*}:setResourceLabels"
  363. body: "*"
  364. additional_bindings {
  365. post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/resourceLabels"
  366. body: "*"
  367. }
  368. };
  369. }
  370. // Enables or disables the ABAC authorization mechanism on a cluster.
  371. rpc SetLegacyAbac(SetLegacyAbacRequest) returns (Operation) {
  372. option (google.api.http) = {
  373. post: "/v1/{name=projects/*/locations/*/clusters/*}:setLegacyAbac"
  374. body: "*"
  375. additional_bindings {
  376. post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/legacyAbac"
  377. body: "*"
  378. }
  379. };
  380. option (google.api.method_signature) = "project_id,zone,cluster_id,enabled";
  381. option (google.api.method_signature) = "name,enabled";
  382. }
  383. // Starts master IP rotation.
  384. rpc StartIPRotation(StartIPRotationRequest) returns (Operation) {
  385. option (google.api.http) = {
  386. post: "/v1/{name=projects/*/locations/*/clusters/*}:startIpRotation"
  387. body: "*"
  388. additional_bindings {
  389. post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}:startIpRotation"
  390. body: "*"
  391. }
  392. };
  393. option (google.api.method_signature) = "project_id,zone,cluster_id";
  394. option (google.api.method_signature) = "name";
  395. }
  396. // Completes master IP rotation.
  397. rpc CompleteIPRotation(CompleteIPRotationRequest) returns (Operation) {
  398. option (google.api.http) = {
  399. post: "/v1/{name=projects/*/locations/*/clusters/*}:completeIpRotation"
  400. body: "*"
  401. additional_bindings {
  402. post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}:completeIpRotation"
  403. body: "*"
  404. }
  405. };
  406. option (google.api.method_signature) = "project_id,zone,cluster_id";
  407. option (google.api.method_signature) = "name";
  408. }
  409. // Sets the size for a specific node pool. The new size will be used for all
  410. // replicas, including future replicas created by modifying
  411. // [NodePool.locations][google.container.v1.NodePool.locations].
  412. rpc SetNodePoolSize(SetNodePoolSizeRequest) returns (Operation) {
  413. option (google.api.http) = {
  414. post: "/v1/{name=projects/*/locations/*/clusters/*/nodePools/*}:setSize"
  415. body: "*"
  416. additional_bindings {
  417. post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/nodePools/{node_pool_id}/setSize"
  418. body: "*"
  419. }
  420. };
  421. }
  422. // Enables or disables Network Policy for a cluster.
  423. rpc SetNetworkPolicy(SetNetworkPolicyRequest) returns (Operation) {
  424. option (google.api.http) = {
  425. post: "/v1/{name=projects/*/locations/*/clusters/*}:setNetworkPolicy"
  426. body: "*"
  427. additional_bindings {
  428. post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}:setNetworkPolicy"
  429. body: "*"
  430. }
  431. };
  432. option (google.api.method_signature) = "project_id,zone,cluster_id,network_policy";
  433. option (google.api.method_signature) = "name,network_policy";
  434. }
  435. // Sets the maintenance policy for a cluster.
  436. rpc SetMaintenancePolicy(SetMaintenancePolicyRequest) returns (Operation) {
  437. option (google.api.http) = {
  438. post: "/v1/{name=projects/*/locations/*/clusters/*}:setMaintenancePolicy"
  439. body: "*"
  440. additional_bindings {
  441. post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}:setMaintenancePolicy"
  442. body: "*"
  443. }
  444. };
  445. option (google.api.method_signature) = "project_id,zone,cluster_id,maintenance_policy";
  446. option (google.api.method_signature) = "name,maintenance_policy";
  447. }
  448. // Lists subnetworks that are usable for creating clusters in a project.
  449. rpc ListUsableSubnetworks(ListUsableSubnetworksRequest) returns (ListUsableSubnetworksResponse) {
  450. option (google.api.http) = {
  451. get: "/v1/{parent=projects/*}/aggregated/usableSubnetworks"
  452. };
  453. }
  454. }
  455. // Parameters that can be configured on Linux nodes.
  456. message LinuxNodeConfig {
  457. // Possible cgroup modes that can be used.
  458. enum CgroupMode {
  459. // CGROUP_MODE_UNSPECIFIED is when unspecified cgroup configuration is used.
  460. // The default for the GKE node OS image will be used.
  461. CGROUP_MODE_UNSPECIFIED = 0;
  462. // CGROUP_MODE_V1 specifies to use cgroupv1 for the cgroup configuration on
  463. // the node image.
  464. CGROUP_MODE_V1 = 1;
  465. // CGROUP_MODE_V2 specifies to use cgroupv2 for the cgroup configuration on
  466. // the node image.
  467. CGROUP_MODE_V2 = 2;
  468. }
  469. // The Linux kernel parameters to be applied to the nodes and all pods running
  470. // on the nodes.
  471. //
  472. // The following parameters are supported.
  473. //
  474. // net.core.busy_poll
  475. // net.core.busy_read
  476. // net.core.netdev_max_backlog
  477. // net.core.rmem_max
  478. // net.core.wmem_default
  479. // net.core.wmem_max
  480. // net.core.optmem_max
  481. // net.core.somaxconn
  482. // net.ipv4.tcp_rmem
  483. // net.ipv4.tcp_wmem
  484. // net.ipv4.tcp_tw_reuse
  485. map<string, string> sysctls = 1;
  486. // cgroup_mode specifies the cgroup mode to be used on the node.
  487. CgroupMode cgroup_mode = 2;
  488. }
  489. // Node kubelet configs.
  490. message NodeKubeletConfig {
  491. // Control the CPU management policy on the node.
  492. // See
  493. // https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-policies/
  494. //
  495. // The following values are allowed.
  496. // * "none": the default, which represents the existing scheduling behavior.
  497. // * "static": allows pods with certain resource characteristics to be granted
  498. // increased CPU affinity and exclusivity on the node.
  499. // The default value is 'none' if unspecified.
  500. string cpu_manager_policy = 1;
  501. // Enable CPU CFS quota enforcement for containers that specify CPU limits.
  502. //
  503. // This option is enabled by default which makes kubelet use CFS quota
  504. // (https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt) to
  505. // enforce container CPU limits. Otherwise, CPU limits will not be enforced at
  506. // all.
  507. //
  508. // Disable this option to mitigate CPU throttling problems while still having
  509. // your pods to be in Guaranteed QoS class by specifying the CPU limits.
  510. //
  511. // The default value is 'true' if unspecified.
  512. google.protobuf.BoolValue cpu_cfs_quota = 2;
  513. // Set the CPU CFS quota period value 'cpu.cfs_period_us'.
  514. //
  515. // The string must be a sequence of decimal numbers, each with optional
  516. // fraction and a unit suffix, such as "300ms".
  517. // Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".
  518. // The value must be a positive duration.
  519. string cpu_cfs_quota_period = 3;
  520. // Set the Pod PID limits. See
  521. // https://kubernetes.io/docs/concepts/policy/pid-limiting/#pod-pid-limits
  522. //
  523. // Controls the maximum number of processes allowed to run in a pod. The value
  524. // must be greater than or equal to 1024 and less than 4194304.
  525. int64 pod_pids_limit = 4;
  526. }
  527. // Parameters that describe the nodes in a cluster.
  528. //
  529. // GKE Autopilot clusters do not
  530. // recognize parameters in `NodeConfig`. Use
  531. // [AutoprovisioningNodePoolDefaults][google.container.v1.AutoprovisioningNodePoolDefaults]
  532. // instead.
  533. message NodeConfig {
  534. // The name of a Google Compute Engine [machine
  535. // type](https://cloud.google.com/compute/docs/machine-types)
  536. //
  537. // If unspecified, the default machine type is `e2-medium`.
  538. string machine_type = 1;
  539. // Size of the disk attached to each node, specified in GB.
  540. // The smallest allowed disk size is 10GB.
  541. //
  542. // If unspecified, the default disk size is 100GB.
  543. int32 disk_size_gb = 2;
  544. // The set of Google API scopes to be made available on all of the
  545. // node VMs under the "default" service account.
  546. //
  547. // The following scopes are recommended, but not required, and by default are
  548. // not included:
  549. //
  550. // * `https://www.googleapis.com/auth/compute` is required for mounting
  551. // persistent storage on your nodes.
  552. // * `https://www.googleapis.com/auth/devstorage.read_only` is required for
  553. // communicating with **gcr.io**
  554. // (the [Google Container
  555. // Registry](https://cloud.google.com/container-registry/)).
  556. //
  557. // If unspecified, no scopes are added, unless Cloud Logging or Cloud
  558. // Monitoring are enabled, in which case their required scopes will be added.
  559. repeated string oauth_scopes = 3;
  560. // The Google Cloud Platform Service Account to be used by the node VMs.
  561. // Specify the email address of the Service Account; otherwise, if no Service
  562. // Account is specified, the "default" service account is used.
  563. string service_account = 9;
  564. // The metadata key/value pairs assigned to instances in the cluster.
  565. //
  566. // Keys must conform to the regexp `[a-zA-Z0-9-_]+` and be less than 128 bytes
  567. // in length. These are reflected as part of a URL in the metadata server.
  568. // Additionally, to avoid ambiguity, keys must not conflict with any other
  569. // metadata keys for the project or be one of the reserved keys:
  570. //
  571. // - "cluster-location"
  572. // - "cluster-name"
  573. // - "cluster-uid"
  574. // - "configure-sh"
  575. // - "containerd-configure-sh"
  576. // - "enable-os-login"
  577. // - "gci-ensure-gke-docker"
  578. // - "gci-metrics-enabled"
  579. // - "gci-update-strategy"
  580. // - "instance-template"
  581. // - "kube-env"
  582. // - "startup-script"
  583. // - "user-data"
  584. // - "disable-address-manager"
  585. // - "windows-startup-script-ps1"
  586. // - "common-psm1"
  587. // - "k8s-node-setup-psm1"
  588. // - "install-ssh-psm1"
  589. // - "user-profile-psm1"
  590. //
  591. // Values are free-form strings, and only have meaning as interpreted by
  592. // the image running in the instance. The only restriction placed on them is
  593. // that each value's size must be less than or equal to 32 KB.
  594. //
  595. // The total size of all keys and values must be less than 512 KB.
  596. map<string, string> metadata = 4;
  597. // The image type to use for this node. Note that for a given image type,
  598. // the latest version of it will be used.
  599. string image_type = 5;
  600. // The map of Kubernetes labels (key/value pairs) to be applied to each node.
  601. // These will added in addition to any default label(s) that
  602. // Kubernetes may apply to the node.
  603. // In case of conflict in label keys, the applied set may differ depending on
  604. // the Kubernetes version -- it's best to assume the behavior is undefined
  605. // and conflicts should be avoided.
  606. // For more information, including usage and the valid values, see:
  607. // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
  608. map<string, string> labels = 6;
  609. // The number of local SSD disks to be attached to the node.
  610. //
  611. // The limit for this value is dependent upon the maximum number of
  612. // disks available on a machine per zone. See:
  613. // https://cloud.google.com/compute/docs/disks/local-ssd
  614. // for more information.
  615. int32 local_ssd_count = 7;
  616. // The list of instance tags applied to all nodes. Tags are used to identify
  617. // valid sources or targets for network firewalls and are specified by
  618. // the client during cluster or node pool creation. Each tag within the list
  619. // must comply with RFC1035.
  620. repeated string tags = 8;
  621. // Whether the nodes are created as preemptible VM instances. See:
  622. // https://cloud.google.com/compute/docs/instances/preemptible for more
  623. // information about preemptible VM instances.
  624. bool preemptible = 10;
  625. // A list of hardware accelerators to be attached to each node.
  626. // See https://cloud.google.com/compute/docs/gpus for more information about
  627. // support for GPUs.
  628. repeated AcceleratorConfig accelerators = 11;
  629. // Type of the disk attached to each node (e.g. 'pd-standard', 'pd-ssd' or
  630. // 'pd-balanced')
  631. //
  632. // If unspecified, the default disk type is 'pd-standard'
  633. string disk_type = 12;
  634. // Minimum CPU platform to be used by this instance. The instance may be
  635. // scheduled on the specified or newer CPU platform. Applicable values are the
  636. // friendly names of CPU platforms, such as
  637. // `minCpuPlatform: "Intel Haswell"` or
  638. // `minCpuPlatform: "Intel Sandy Bridge"`. For more
  639. // information, read [how to specify min CPU
  640. // platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)
  641. string min_cpu_platform = 13;
  642. // The workload metadata configuration for this node.
  643. WorkloadMetadataConfig workload_metadata_config = 14;
  644. // List of kubernetes taints to be applied to each node.
  645. //
  646. // For more information, including usage and the valid values, see:
  647. // https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
  648. repeated NodeTaint taints = 15;
  649. // Sandbox configuration for this node.
  650. SandboxConfig sandbox_config = 17;
  651. // Setting this field will assign instances of this
  652. // pool to run on the specified node group. This is useful for running
  653. // workloads on [sole tenant
  654. // nodes](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes).
  655. string node_group = 18;
  656. // The optional reservation affinity. Setting this field will apply
  657. // the specified [Zonal Compute
  658. // Reservation](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources)
  659. // to this node pool.
  660. ReservationAffinity reservation_affinity = 19;
  661. // Shielded Instance options.
  662. ShieldedInstanceConfig shielded_instance_config = 20;
  663. // Parameters that can be configured on Linux nodes.
  664. LinuxNodeConfig linux_node_config = 21;
  665. // Node kubelet configs.
  666. NodeKubeletConfig kubelet_config = 22;
  667. //
  668. // The Customer Managed Encryption Key used to encrypt the boot disk attached
  669. // to each node in the node pool. This should be of the form
  670. // projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME].
  671. // For more information about protecting resources with Cloud KMS Keys please
  672. // see:
  673. // https://cloud.google.com/compute/docs/disks/customer-managed-encryption
  674. string boot_disk_kms_key = 23;
  675. // Google Container File System (image streaming) configs.
  676. GcfsConfig gcfs_config = 25;
  677. // Advanced features for the Compute Engine VM.
  678. AdvancedMachineFeatures advanced_machine_features = 26;
  679. // Enable or disable gvnic in the node pool.
  680. VirtualNIC gvnic = 29;
  681. // Spot flag for enabling Spot VM, which is a rebrand of
  682. // the existing preemptible flag.
  683. bool spot = 32;
  684. // Confidential nodes config.
  685. // All the nodes in the node pool will be Confidential VM once enabled.
  686. ConfidentialNodes confidential_nodes = 35;
  687. // Enable or disable NCCL fast socket for the node pool.
  688. optional FastSocket fast_socket = 36;
  689. // The resource labels for the node pool to use to annotate any related
  690. // Google Compute Engine resources.
  691. map<string, string> resource_labels = 37;
  692. // Logging configuration.
  693. NodePoolLoggingConfig logging_config = 38;
  694. }
  695. // Specifies options for controlling advanced machine features.
  696. message AdvancedMachineFeatures {
  697. // The number of threads per physical core. To disable simultaneous
  698. // multithreading (SMT) set this to 1. If unset, the maximum number of threads
  699. // supported per core by the underlying processor is assumed.
  700. optional int64 threads_per_core = 1;
  701. }
  702. // Parameters for node pool-level network config.
  703. message NodeNetworkConfig {
  704. // Configuration of all network bandwidth tiers
  705. message NetworkPerformanceConfig {
  706. // Node network tier
  707. enum Tier {
  708. // Default value
  709. TIER_UNSPECIFIED = 0;
  710. // Higher bandwidth, actual values based on VM size.
  711. TIER_1 = 1;
  712. }
  713. // Specifies the total network bandwidth tier for the NodePool.
  714. optional Tier total_egress_bandwidth_tier = 1;
  715. }
  716. // Input only. Whether to create a new range for pod IPs in this node pool.
  717. // Defaults are provided for `pod_range` and `pod_ipv4_cidr_block` if they
  718. // are not specified.
  719. //
  720. // If neither `create_pod_range` or `pod_range` are specified, the
  721. // cluster-level default (`ip_allocation_policy.cluster_ipv4_cidr_block`) is
  722. // used.
  723. //
  724. // Only applicable if `ip_allocation_policy.use_ip_aliases` is true.
  725. //
  726. // This field cannot be changed after the node pool has been created.
  727. bool create_pod_range = 4 [(google.api.field_behavior) = INPUT_ONLY];
  728. // The ID of the secondary range for pod IPs.
  729. // If `create_pod_range` is true, this ID is used for the new range.
  730. // If `create_pod_range` is false, uses an existing secondary range with this
  731. // ID.
  732. //
  733. // Only applicable if `ip_allocation_policy.use_ip_aliases` is true.
  734. //
  735. // This field cannot be changed after the node pool has been created.
  736. string pod_range = 5;
  737. // The IP address range for pod IPs in this node pool.
  738. //
  739. // Only applicable if `create_pod_range` is true.
  740. //
  741. // Set to blank to have a range chosen with the default size.
  742. //
  743. // Set to /netmask (e.g. `/14`) to have a range chosen with a specific
  744. // netmask.
  745. //
  746. // Set to a
  747. // [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
  748. // notation (e.g. `10.96.0.0/14`) to pick a specific range to use.
  749. //
  750. // Only applicable if `ip_allocation_policy.use_ip_aliases` is true.
  751. //
  752. // This field cannot be changed after the node pool has been created.
  753. string pod_ipv4_cidr_block = 6;
  754. // Whether nodes have internal IP addresses only.
  755. // If enable_private_nodes is not specified, then the value is derived from
  756. // [cluster.privateClusterConfig.enablePrivateNodes][google.container.v1beta1.PrivateClusterConfig.enablePrivateNodes]
  757. optional bool enable_private_nodes = 9;
  758. // Network bandwidth tier configuration.
  759. optional NetworkPerformanceConfig network_performance_config = 11;
  760. }
  761. // A set of Shielded Instance options.
  762. message ShieldedInstanceConfig {
  763. // Defines whether the instance has Secure Boot enabled.
  764. //
  765. // Secure Boot helps ensure that the system only runs authentic software by
  766. // verifying the digital signature of all boot components, and halting the
  767. // boot process if signature verification fails.
  768. bool enable_secure_boot = 1;
  769. // Defines whether the instance has integrity monitoring enabled.
  770. //
  771. // Enables monitoring and attestation of the boot integrity of the instance.
  772. // The attestation is performed against the integrity policy baseline. This
  773. // baseline is initially derived from the implicitly trusted boot image when
  774. // the instance is created.
  775. bool enable_integrity_monitoring = 2;
  776. }
  777. // SandboxConfig contains configurations of the sandbox to use for the node.
  778. message SandboxConfig {
  779. // Possible types of sandboxes.
  780. enum Type {
  781. // Default value. This should not be used.
  782. UNSPECIFIED = 0;
  783. // Run sandbox using gvisor.
  784. GVISOR = 1;
  785. }
  786. // Type of the sandbox to use for the node.
  787. Type type = 2;
  788. }
  789. // GcfsConfig contains configurations of Google Container File System
  790. // (image streaming).
  791. message GcfsConfig {
  792. // Whether to use GCFS.
  793. bool enabled = 1;
  794. }
  795. // [ReservationAffinity](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources)
  796. // is the configuration of desired reservation which instances could take
  797. // capacity from.
  798. message ReservationAffinity {
  799. // Indicates whether to consume capacity from a reservation or not.
  800. enum Type {
  801. // Default value. This should not be used.
  802. UNSPECIFIED = 0;
  803. // Do not consume from any reserved capacity.
  804. NO_RESERVATION = 1;
  805. // Consume any reservation available.
  806. ANY_RESERVATION = 2;
  807. // Must consume from a specific reservation. Must specify key value fields
  808. // for specifying the reservations.
  809. SPECIFIC_RESERVATION = 3;
  810. }
  811. // Corresponds to the type of reservation consumption.
  812. Type consume_reservation_type = 1;
  813. // Corresponds to the label key of a reservation resource. To target a
  814. // SPECIFIC_RESERVATION by name, specify
  815. // "compute.googleapis.com/reservation-name" as the key and specify the name
  816. // of your reservation as its value.
  817. string key = 2;
  818. // Corresponds to the label value(s) of reservation resource(s).
  819. repeated string values = 3;
  820. }
  821. // Kubernetes taint is comprised of three fields: key, value, and effect. Effect
  822. // can only be one of three types: NoSchedule, PreferNoSchedule or NoExecute.
  823. //
  824. // See
  825. // [here](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration)
  826. // for more information, including usage and the valid values.
  827. message NodeTaint {
  828. // Possible values for Effect in taint.
  829. enum Effect {
  830. // Not set
  831. EFFECT_UNSPECIFIED = 0;
  832. // NoSchedule
  833. NO_SCHEDULE = 1;
  834. // PreferNoSchedule
  835. PREFER_NO_SCHEDULE = 2;
  836. // NoExecute
  837. NO_EXECUTE = 3;
  838. }
  839. // Key for taint.
  840. string key = 1;
  841. // Value for taint.
  842. string value = 2;
  843. // Effect for taint.
  844. Effect effect = 3;
  845. }
  846. // Collection of Kubernetes [node
  847. // taints](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration).
  848. message NodeTaints {
  849. // List of node taints.
  850. repeated NodeTaint taints = 1;
  851. }
  852. // Collection of node-level [Kubernetes
  853. // labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels).
  854. message NodeLabels {
  855. // Map of node label keys and node label values.
  856. map<string, string> labels = 1;
  857. }
  858. // Collection of [GCP
  859. // labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels).
  860. message ResourceLabels {
  861. // Map of node label keys and node label values.
  862. map<string, string> labels = 1;
  863. }
  864. // Collection of Compute Engine network tags that can be applied to a node's
  865. // underlying VM instance.
  866. message NetworkTags {
  867. // List of network tags.
  868. repeated string tags = 1;
  869. }
  870. // The authentication information for accessing the master endpoint.
  871. // Authentication can be done using HTTP basic auth or using client
  872. // certificates.
  873. message MasterAuth {
  874. // The username to use for HTTP basic authentication to the master endpoint.
  875. // For clusters v1.6.0 and later, basic authentication can be disabled by
  876. // leaving username unspecified (or setting it to the empty string).
  877. //
  878. // Warning: basic authentication is deprecated, and will be removed in GKE
  879. // control plane versions 1.19 and newer. For a list of recommended
  880. // authentication methods, see:
  881. // https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication
  882. string username = 1 [deprecated = true];
  883. // The password to use for HTTP basic authentication to the master endpoint.
  884. // Because the master endpoint is open to the Internet, you should create a
  885. // strong password. If a password is provided for cluster creation, username
  886. // must be non-empty.
  887. //
  888. // Warning: basic authentication is deprecated, and will be removed in GKE
  889. // control plane versions 1.19 and newer. For a list of recommended
  890. // authentication methods, see:
  891. // https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication
  892. string password = 2 [deprecated = true];
  893. // Configuration for client certificate authentication on the cluster. For
  894. // clusters before v1.12, if no configuration is specified, a client
  895. // certificate is issued.
  896. ClientCertificateConfig client_certificate_config = 3;
  897. // [Output only] Base64-encoded public certificate that is the root of
  898. // trust for the cluster.
  899. string cluster_ca_certificate = 100;
  900. // [Output only] Base64-encoded public certificate used by clients to
  901. // authenticate to the cluster endpoint.
  902. string client_certificate = 101;
  903. // [Output only] Base64-encoded private key used by clients to authenticate
  904. // to the cluster endpoint.
  905. string client_key = 102;
  906. }
  907. // Configuration for client certificates on the cluster.
  908. message ClientCertificateConfig {
  909. // Issue a client certificate.
  910. bool issue_client_certificate = 1;
  911. }
  912. // Configuration for the addons that can be automatically spun up in the
  913. // cluster, enabling additional functionality.
  914. message AddonsConfig {
  915. // Configuration for the HTTP (L7) load balancing controller addon, which
  916. // makes it easy to set up HTTP load balancers for services in a cluster.
  917. HttpLoadBalancing http_load_balancing = 1;
  918. // Configuration for the horizontal pod autoscaling feature, which
  919. // increases or decreases the number of replica pods a replication controller
  920. // has based on the resource usage of the existing pods.
  921. HorizontalPodAutoscaling horizontal_pod_autoscaling = 2;
  922. // Configuration for the Kubernetes Dashboard.
  923. // This addon is deprecated, and will be disabled in 1.15. It is recommended
  924. // to use the Cloud Console to manage and monitor your Kubernetes clusters,
  925. // workloads and applications. For more information, see:
  926. // https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards
  927. KubernetesDashboard kubernetes_dashboard = 3 [deprecated = true];
  928. // Configuration for NetworkPolicy. This only tracks whether the addon
  929. // is enabled or not on the Master, it does not track whether network policy
  930. // is enabled for the nodes.
  931. NetworkPolicyConfig network_policy_config = 4;
  932. // Configuration for the Cloud Run addon, which allows the user to use a
  933. // managed Knative service.
  934. CloudRunConfig cloud_run_config = 7;
  935. // Configuration for NodeLocalDNS, a dns cache running on cluster nodes
  936. DnsCacheConfig dns_cache_config = 8;
  937. // Configuration for the ConfigConnector add-on, a Kubernetes
  938. // extension to manage hosted GCP services through the Kubernetes API
  939. ConfigConnectorConfig config_connector_config = 10;
  940. // Configuration for the Compute Engine Persistent Disk CSI driver.
  941. GcePersistentDiskCsiDriverConfig gce_persistent_disk_csi_driver_config = 11;
  942. // Configuration for the GCP Filestore CSI driver.
  943. GcpFilestoreCsiDriverConfig gcp_filestore_csi_driver_config = 14;
  944. // Configuration for the Backup for GKE agent addon.
  945. GkeBackupAgentConfig gke_backup_agent_config = 16;
  946. }
  947. // Configuration options for the HTTP (L7) load balancing controller addon,
  948. // which makes it easy to set up HTTP load balancers for services in a cluster.
  949. message HttpLoadBalancing {
  950. // Whether the HTTP Load Balancing controller is enabled in the cluster.
  951. // When enabled, it runs a small pod in the cluster that manages the load
  952. // balancers.
  953. bool disabled = 1;
  954. }
  955. // Configuration options for the horizontal pod autoscaling feature, which
  956. // increases or decreases the number of replica pods a replication controller
  957. // has based on the resource usage of the existing pods.
  958. message HorizontalPodAutoscaling {
  959. // Whether the Horizontal Pod Autoscaling feature is enabled in the cluster.
  960. // When enabled, it ensures that metrics are collected into Stackdriver
  961. // Monitoring.
  962. bool disabled = 1;
  963. }
  964. // Configuration for the Kubernetes Dashboard.
  965. message KubernetesDashboard {
  966. // Whether the Kubernetes Dashboard is enabled for this cluster.
  967. bool disabled = 1;
  968. }
  969. // Configuration for NetworkPolicy. This only tracks whether the addon
  970. // is enabled or not on the Master, it does not track whether network policy
  971. // is enabled for the nodes.
  972. message NetworkPolicyConfig {
  973. // Whether NetworkPolicy is enabled for this cluster.
  974. bool disabled = 1;
  975. }
  976. // Configuration for NodeLocal DNSCache
  977. message DnsCacheConfig {
  978. // Whether NodeLocal DNSCache is enabled for this cluster.
  979. bool enabled = 1;
  980. }
  981. // Configuration for controlling master global access settings.
  982. message PrivateClusterMasterGlobalAccessConfig {
  983. // Whenever master is accessible globally or not.
  984. bool enabled = 1;
  985. }
  986. // Configuration options for private clusters.
  987. message PrivateClusterConfig {
  988. // Whether nodes have internal IP addresses only. If enabled, all nodes are
  989. // given only RFC 1918 private addresses and communicate with the master via
  990. // private networking.
  991. bool enable_private_nodes = 1;
  992. // Whether the master's internal IP address is used as the cluster endpoint.
  993. bool enable_private_endpoint = 2;
  994. // The IP range in CIDR notation to use for the hosted master network. This
  995. // range will be used for assigning internal IP addresses to the master or
  996. // set of masters, as well as the ILB VIP. This range must not overlap with
  997. // any other ranges in use within the cluster's network.
  998. string master_ipv4_cidr_block = 3;
  999. // Output only. The internal IP address of this cluster's master endpoint.
  1000. string private_endpoint = 4;
  1001. // Output only. The external IP address of this cluster's master endpoint.
  1002. string public_endpoint = 5;
  1003. // Output only. The peering name in the customer VPC used by this cluster.
  1004. string peering_name = 7;
  1005. // Controls master global access settings.
  1006. PrivateClusterMasterGlobalAccessConfig master_global_access_config = 8;
  1007. // Subnet to provision the master's private endpoint during cluster creation.
  1008. // Specified in projects/*/regions/*/subnetworks/* format.
  1009. string private_endpoint_subnetwork = 10;
  1010. }
  1011. // Configuration for returning group information from authenticators.
  1012. message AuthenticatorGroupsConfig {
  1013. // Whether this cluster should return group membership lookups
  1014. // during authentication using a group of security groups.
  1015. bool enabled = 1;
  1016. // The name of the security group-of-groups to be used. Only relevant
  1017. // if enabled = true.
  1018. string security_group = 2;
  1019. }
  1020. // Configuration options for the Cloud Run feature.
  1021. message CloudRunConfig {
  1022. // Load balancer type of ingress service of Cloud Run.
  1023. enum LoadBalancerType {
  1024. // Load balancer type for Cloud Run is unspecified.
  1025. LOAD_BALANCER_TYPE_UNSPECIFIED = 0;
  1026. // Install external load balancer for Cloud Run.
  1027. LOAD_BALANCER_TYPE_EXTERNAL = 1;
  1028. // Install internal load balancer for Cloud Run.
  1029. LOAD_BALANCER_TYPE_INTERNAL = 2;
  1030. }
  1031. // Whether Cloud Run addon is enabled for this cluster.
  1032. bool disabled = 1;
  1033. // Which load balancer type is installed for Cloud Run.
  1034. LoadBalancerType load_balancer_type = 3;
  1035. }
  1036. // Configuration options for the Config Connector add-on.
  1037. message ConfigConnectorConfig {
  1038. // Whether Cloud Connector is enabled for this cluster.
  1039. bool enabled = 1;
  1040. }
  1041. // Configuration for the Compute Engine PD CSI driver.
  1042. message GcePersistentDiskCsiDriverConfig {
  1043. // Whether the Compute Engine PD CSI driver is enabled for this cluster.
  1044. bool enabled = 1;
  1045. }
  1046. // Configuration for the GCP Filestore CSI driver.
  1047. message GcpFilestoreCsiDriverConfig {
  1048. // Whether the GCP Filestore CSI driver is enabled for this cluster.
  1049. bool enabled = 1;
  1050. }
  1051. // Configuration for the Backup for GKE Agent.
  1052. message GkeBackupAgentConfig {
  1053. // Whether the Backup for GKE agent is enabled for this cluster.
  1054. bool enabled = 1;
  1055. }
  1056. // Configuration options for the master authorized networks feature. Enabled
  1057. // master authorized networks will disallow all external traffic to access
  1058. // Kubernetes master through HTTPS except traffic from the given CIDR blocks,
  1059. // Google Compute Engine Public IPs and Google Prod IPs.
  1060. message MasterAuthorizedNetworksConfig {
  1061. // CidrBlock contains an optional name and one CIDR block.
  1062. message CidrBlock {
  1063. // display_name is an optional field for users to identify CIDR blocks.
  1064. string display_name = 1;
  1065. // cidr_block must be specified in CIDR notation.
  1066. string cidr_block = 2;
  1067. }
  1068. // Whether or not master authorized networks is enabled.
  1069. bool enabled = 1;
  1070. // cidr_blocks define up to 50 external networks that could access
  1071. // Kubernetes master through HTTPS.
  1072. repeated CidrBlock cidr_blocks = 2;
  1073. // Whether master is accessbile via Google Compute Engine Public IP addresses.
  1074. optional bool gcp_public_cidrs_access_enabled = 3;
  1075. }
  1076. // Configuration for the legacy Attribute Based Access Control authorization
  1077. // mode.
  1078. message LegacyAbac {
  1079. // Whether the ABAC authorizer is enabled for this cluster. When enabled,
  1080. // identities in the system, including service accounts, nodes, and
  1081. // controllers, will have statically granted permissions beyond those
  1082. // provided by the RBAC configuration or IAM.
  1083. bool enabled = 1;
  1084. }
  1085. // Configuration options for the NetworkPolicy feature.
  1086. // https://kubernetes.io/docs/concepts/services-networking/networkpolicies/
  1087. message NetworkPolicy {
  1088. // Allowed Network Policy providers.
  1089. enum Provider {
  1090. // Not set
  1091. PROVIDER_UNSPECIFIED = 0;
  1092. // Tigera (Calico Felix).
  1093. CALICO = 1;
  1094. }
  1095. // The selected network policy provider.
  1096. Provider provider = 1;
  1097. // Whether network policy is enabled on the cluster.
  1098. bool enabled = 2;
  1099. }
  1100. // Configuration for Binary Authorization.
  1101. message BinaryAuthorization {
  1102. // Binary Authorization mode of operation.
  1103. enum EvaluationMode {
  1104. // Default value
  1105. EVALUATION_MODE_UNSPECIFIED = 0;
  1106. // Disable BinaryAuthorization
  1107. DISABLED = 1;
  1108. // Enforce Kubernetes admission requests with BinaryAuthorization using the
  1109. // project's singleton policy. This is equivalent to setting the
  1110. // enabled boolean to true.
  1111. PROJECT_SINGLETON_POLICY_ENFORCE = 2;
  1112. }
  1113. // This field is deprecated. Leave this unset and instead configure
  1114. // BinaryAuthorization using evaluation_mode. If evaluation_mode is set to
  1115. // anything other than EVALUATION_MODE_UNSPECIFIED, this field is ignored.
  1116. bool enabled = 1 [deprecated = true];
  1117. // Mode of operation for binauthz policy evaluation. If unspecified, defaults
  1118. // to DISABLED.
  1119. EvaluationMode evaluation_mode = 2;
  1120. }
  1121. // Configuration for controlling how IPs are allocated in the cluster.
  1122. message IPAllocationPolicy {
  1123. // Whether alias IPs will be used for pod IPs in the cluster.
  1124. // This is used in conjunction with use_routes. It cannot
  1125. // be true if use_routes is true. If both use_ip_aliases and use_routes are
  1126. // false, then the server picks the default IP allocation mode
  1127. bool use_ip_aliases = 1;
  1128. // Whether a new subnetwork will be created automatically for the cluster.
  1129. //
  1130. // This field is only applicable when `use_ip_aliases` is true.
  1131. bool create_subnetwork = 2;
  1132. // A custom subnetwork name to be used if `create_subnetwork` is true. If
  1133. // this field is empty, then an automatic name will be chosen for the new
  1134. // subnetwork.
  1135. string subnetwork_name = 3;
  1136. // This field is deprecated, use cluster_ipv4_cidr_block.
  1137. string cluster_ipv4_cidr = 4 [deprecated = true];
  1138. // This field is deprecated, use node_ipv4_cidr_block.
  1139. string node_ipv4_cidr = 5 [deprecated = true];
  1140. // This field is deprecated, use services_ipv4_cidr_block.
  1141. string services_ipv4_cidr = 6 [deprecated = true];
  1142. // The name of the secondary range to be used for the cluster CIDR
  1143. // block. The secondary range will be used for pod IP
  1144. // addresses. This must be an existing secondary range associated
  1145. // with the cluster subnetwork.
  1146. //
  1147. // This field is only applicable with use_ip_aliases is true and
  1148. // create_subnetwork is false.
  1149. string cluster_secondary_range_name = 7;
  1150. // The name of the secondary range to be used as for the services
  1151. // CIDR block. The secondary range will be used for service
  1152. // ClusterIPs. This must be an existing secondary range associated
  1153. // with the cluster subnetwork.
  1154. //
  1155. // This field is only applicable with use_ip_aliases is true and
  1156. // create_subnetwork is false.
  1157. string services_secondary_range_name = 8;
  1158. // The IP address range for the cluster pod IPs. If this field is set, then
  1159. // `cluster.cluster_ipv4_cidr` must be left blank.
  1160. //
  1161. // This field is only applicable when `use_ip_aliases` is true.
  1162. //
  1163. // Set to blank to have a range chosen with the default size.
  1164. //
  1165. // Set to /netmask (e.g. `/14`) to have a range chosen with a specific
  1166. // netmask.
  1167. //
  1168. // Set to a
  1169. // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
  1170. // notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.
  1171. // `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range
  1172. // to use.
  1173. string cluster_ipv4_cidr_block = 9;
  1174. // The IP address range of the instance IPs in this cluster.
  1175. //
  1176. // This is applicable only if `create_subnetwork` is true.
  1177. //
  1178. // Set to blank to have a range chosen with the default size.
  1179. //
  1180. // Set to /netmask (e.g. `/14`) to have a range chosen with a specific
  1181. // netmask.
  1182. //
  1183. // Set to a
  1184. // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
  1185. // notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.
  1186. // `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range
  1187. // to use.
  1188. string node_ipv4_cidr_block = 10;
  1189. // The IP address range of the services IPs in this cluster. If blank, a range
  1190. // will be automatically chosen with the default size.
  1191. //
  1192. // This field is only applicable when `use_ip_aliases` is true.
  1193. //
  1194. // Set to blank to have a range chosen with the default size.
  1195. //
  1196. // Set to /netmask (e.g. `/14`) to have a range chosen with a specific
  1197. // netmask.
  1198. //
  1199. // Set to a
  1200. // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
  1201. // notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.
  1202. // `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range
  1203. // to use.
  1204. string services_ipv4_cidr_block = 11;
  1205. // The IP address range of the Cloud TPUs in this cluster. If unspecified, a
  1206. // range will be automatically chosen with the default size.
  1207. //
  1208. // This field is only applicable when `use_ip_aliases` is true.
  1209. //
  1210. // If unspecified, the range will use the default size.
  1211. //
  1212. // Set to /netmask (e.g. `/14`) to have a range chosen with a specific
  1213. // netmask.
  1214. //
  1215. // Set to a
  1216. // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
  1217. // notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.
  1218. // `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range
  1219. // to use.
  1220. string tpu_ipv4_cidr_block = 13;
  1221. // Whether routes will be used for pod IPs in the cluster.
  1222. // This is used in conjunction with use_ip_aliases. It cannot be true if
  1223. // use_ip_aliases is true. If both use_ip_aliases and use_routes are false,
  1224. // then the server picks the default IP allocation mode
  1225. bool use_routes = 15;
  1226. // The IP stack type of the cluster
  1227. StackType stack_type = 16;
  1228. // The ipv6 access type (internal or external) when create_subnetwork is true
  1229. IPv6AccessType ipv6_access_type = 17;
  1230. }
  1231. // A Google Kubernetes Engine cluster.
  1232. message Cluster {
  1233. // The current status of the cluster.
  1234. enum Status {
  1235. // Not set.
  1236. STATUS_UNSPECIFIED = 0;
  1237. // The PROVISIONING state indicates the cluster is being created.
  1238. PROVISIONING = 1;
  1239. // The RUNNING state indicates the cluster has been created and is fully
  1240. // usable.
  1241. RUNNING = 2;
  1242. // The RECONCILING state indicates that some work is actively being done on
  1243. // the cluster, such as upgrading the master or node software. Details can
  1244. // be found in the `statusMessage` field.
  1245. RECONCILING = 3;
  1246. // The STOPPING state indicates the cluster is being deleted.
  1247. STOPPING = 4;
  1248. // The ERROR state indicates the cluster is unusable. It will be
  1249. // automatically deleted. Details can be found in the `statusMessage` field.
  1250. ERROR = 5;
  1251. // The DEGRADED state indicates the cluster requires user action to restore
  1252. // full functionality. Details can be found in the `statusMessage` field.
  1253. DEGRADED = 6;
  1254. }
  1255. // The name of this cluster. The name must be unique within this project
  1256. // and location (e.g. zone or region), and can be up to 40 characters with
  1257. // the following restrictions:
  1258. //
  1259. // * Lowercase letters, numbers, and hyphens only.
  1260. // * Must start with a letter.
  1261. // * Must end with a number or a letter.
  1262. string name = 1;
  1263. // An optional description of this cluster.
  1264. string description = 2;
  1265. // The number of nodes to create in this cluster. You must ensure that your
  1266. // Compute Engine [resource quota](https://cloud.google.com/compute/quotas)
  1267. // is sufficient for this number of instances. You must also have available
  1268. // firewall and routes quota.
  1269. // For requests, this field should only be used in lieu of a
  1270. // "node_pool" object, since this configuration (along with the
  1271. // "node_config") will be used to create a "NodePool" object with an
  1272. // auto-generated name. Do not use this and a node_pool at the same time.
  1273. //
  1274. // This field is deprecated, use node_pool.initial_node_count instead.
  1275. int32 initial_node_count = 3 [deprecated = true];
  1276. // Parameters used in creating the cluster's nodes.
  1277. // For requests, this field should only be used in lieu of a
  1278. // "node_pool" object, since this configuration (along with the
  1279. // "initial_node_count") will be used to create a "NodePool" object with an
  1280. // auto-generated name. Do not use this and a node_pool at the same time.
  1281. // For responses, this field will be populated with the node configuration of
  1282. // the first node pool. (For configuration of each node pool, see
  1283. // `node_pool.config`)
  1284. //
  1285. // If unspecified, the defaults are used.
  1286. // This field is deprecated, use node_pool.config instead.
  1287. NodeConfig node_config = 4 [deprecated = true];
  1288. // The authentication information for accessing the master endpoint.
  1289. // If unspecified, the defaults are used:
  1290. // For clusters before v1.12, if master_auth is unspecified, `username` will
  1291. // be set to "admin", a random password will be generated, and a client
  1292. // certificate will be issued.
  1293. MasterAuth master_auth = 5;
  1294. // The logging service the cluster should use to write logs.
  1295. // Currently available options:
  1296. //
  1297. // * `logging.googleapis.com/kubernetes` - The Cloud Logging
  1298. // service with a Kubernetes-native resource model
  1299. // * `logging.googleapis.com` - The legacy Cloud Logging service (no longer
  1300. // available as of GKE 1.15).
  1301. // * `none` - no logs will be exported from the cluster.
  1302. //
  1303. // If left as an empty string,`logging.googleapis.com/kubernetes` will be
  1304. // used for GKE 1.14+ or `logging.googleapis.com` for earlier versions.
  1305. string logging_service = 6;
  1306. // The monitoring service the cluster should use to write metrics.
  1307. // Currently available options:
  1308. //
  1309. // * "monitoring.googleapis.com/kubernetes" - The Cloud Monitoring
  1310. // service with a Kubernetes-native resource model
  1311. // * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no
  1312. // longer available as of GKE 1.15).
  1313. // * `none` - No metrics will be exported from the cluster.
  1314. //
  1315. // If left as an empty string,`monitoring.googleapis.com/kubernetes` will be
  1316. // used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions.
  1317. string monitoring_service = 7;
  1318. // The name of the Google Compute Engine
  1319. // [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks)
  1320. // to which the cluster is connected. If left unspecified, the `default`
  1321. // network will be used.
  1322. string network = 8;
  1323. // The IP address range of the container pods in this cluster, in
  1324. // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
  1325. // notation (e.g. `10.96.0.0/14`). Leave blank to have
  1326. // one automatically chosen or specify a `/14` block in `10.0.0.0/8`.
  1327. string cluster_ipv4_cidr = 9;
  1328. // Configurations for the various addons available to run in the cluster.
  1329. AddonsConfig addons_config = 10;
  1330. // The name of the Google Compute Engine
  1331. // [subnetwork](https://cloud.google.com/compute/docs/subnetworks) to which
  1332. // the cluster is connected.
  1333. string subnetwork = 11;
  1334. // The node pools associated with this cluster.
  1335. // This field should not be set if "node_config" or "initial_node_count" are
  1336. // specified.
  1337. repeated NodePool node_pools = 12;
  1338. // The list of Google Compute Engine
  1339. // [zones](https://cloud.google.com/compute/docs/zones#available) in which the
  1340. // cluster's nodes should be located.
  1341. //
  1342. // This field provides a default value if
  1343. // [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations)
  1344. // are not specified during node pool creation.
  1345. //
  1346. // Warning: changing cluster locations will update the
  1347. // [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations)
  1348. // of all node pools and will result in nodes being added and/or removed.
  1349. repeated string locations = 13;
  1350. // Kubernetes alpha features are enabled on this cluster. This includes alpha
  1351. // API groups (e.g. v1alpha1) and features that may not be production ready in
  1352. // the kubernetes version of the master and nodes.
  1353. // The cluster has no SLA for uptime and master/node upgrades are disabled.
  1354. // Alpha enabled clusters are automatically deleted thirty days after
  1355. // creation.
  1356. bool enable_kubernetes_alpha = 14;
  1357. // The resource labels for the cluster to use to annotate any related
  1358. // Google Compute Engine resources.
  1359. map<string, string> resource_labels = 15;
  1360. // The fingerprint of the set of labels for this cluster.
  1361. string label_fingerprint = 16;
  1362. // Configuration for the legacy ABAC authorization mode.
  1363. LegacyAbac legacy_abac = 18;
  1364. // Configuration options for the NetworkPolicy feature.
  1365. NetworkPolicy network_policy = 19;
  1366. // Configuration for cluster IP allocation.
  1367. IPAllocationPolicy ip_allocation_policy = 20;
  1368. // The configuration options for master authorized networks feature.
  1369. MasterAuthorizedNetworksConfig master_authorized_networks_config = 22;
  1370. // Configure the maintenance policy for this cluster.
  1371. MaintenancePolicy maintenance_policy = 23;
  1372. // Configuration for Binary Authorization.
  1373. BinaryAuthorization binary_authorization = 24;
  1374. // Cluster-level autoscaling configuration.
  1375. ClusterAutoscaling autoscaling = 26;
  1376. // Configuration for cluster networking.
  1377. NetworkConfig network_config = 27;
  1378. // The default constraint on the maximum number of pods that can be run
  1379. // simultaneously on a node in the node pool of this cluster. Only honored
  1380. // if cluster created with IP Alias support.
  1381. MaxPodsConstraint default_max_pods_constraint = 30;
  1382. // Configuration for exporting resource usages. Resource usage export is
  1383. // disabled when this config is unspecified.
  1384. ResourceUsageExportConfig resource_usage_export_config = 33;
  1385. // Configuration controlling RBAC group membership information.
  1386. AuthenticatorGroupsConfig authenticator_groups_config = 34;
  1387. // Configuration for private cluster.
  1388. PrivateClusterConfig private_cluster_config = 37;
  1389. // Configuration of etcd encryption.
  1390. DatabaseEncryption database_encryption = 38;
  1391. // Cluster-level Vertical Pod Autoscaling configuration.
  1392. VerticalPodAutoscaling vertical_pod_autoscaling = 39;
  1393. // Shielded Nodes configuration.
  1394. ShieldedNodes shielded_nodes = 40;
  1395. // Release channel configuration.
  1396. ReleaseChannel release_channel = 41;
  1397. // Configuration for the use of Kubernetes Service Accounts in GCP IAM
  1398. // policies.
  1399. WorkloadIdentityConfig workload_identity_config = 43;
  1400. // Configuration for issuance of mTLS keys and certificates to Kubernetes
  1401. // pods.
  1402. MeshCertificates mesh_certificates = 67;
  1403. // Configuration for the fine-grained cost management feature.
  1404. CostManagementConfig cost_management_config = 45;
  1405. // Notification configuration of the cluster.
  1406. NotificationConfig notification_config = 49;
  1407. // Configuration of Confidential Nodes.
  1408. // All the nodes in the cluster will be Confidential VM once enabled.
  1409. ConfidentialNodes confidential_nodes = 50;
  1410. // Configuration for Identity Service component.
  1411. IdentityServiceConfig identity_service_config = 54;
  1412. // [Output only] Server-defined URL for the resource.
  1413. string self_link = 100;
  1414. // [Output only] The name of the Google Compute Engine
  1415. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  1416. // cluster resides. This field is deprecated, use location instead.
  1417. string zone = 101 [deprecated = true];
  1418. // [Output only] The IP address of this cluster's master endpoint.
  1419. // The endpoint can be accessed from the internet at
  1420. // `https://username:password@endpoint/`.
  1421. //
  1422. // See the `masterAuth` property of this resource for username and
  1423. // password information.
  1424. string endpoint = 102;
  1425. // The initial Kubernetes version for this cluster. Valid versions are those
  1426. // found in validMasterVersions returned by getServerConfig. The version can
  1427. // be upgraded over time; such upgrades are reflected in
  1428. // currentMasterVersion and currentNodeVersion.
  1429. //
  1430. // Users may specify either explicit versions offered by
  1431. // Kubernetes Engine or version aliases, which have the following behavior:
  1432. //
  1433. // - "latest": picks the highest valid Kubernetes version
  1434. // - "1.X": picks the highest valid patch+gke.N patch in the 1.X version
  1435. // - "1.X.Y": picks the highest valid gke.N patch in the 1.X.Y version
  1436. // - "1.X.Y-gke.N": picks an explicit Kubernetes version
  1437. // - "","-": picks the default Kubernetes version
  1438. string initial_cluster_version = 103;
  1439. // [Output only] The current software version of the master endpoint.
  1440. string current_master_version = 104;
  1441. // [Output only] Deprecated, use
  1442. // [NodePools.version](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools)
  1443. // instead. The current version of the node software components. If they are
  1444. // currently at multiple versions because they're in the process of being
  1445. // upgraded, this reflects the minimum version of all nodes.
  1446. string current_node_version = 105 [deprecated = true];
  1447. // [Output only] The time the cluster was created, in
  1448. // [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  1449. string create_time = 106;
  1450. // [Output only] The current status of this cluster.
  1451. Status status = 107;
  1452. // [Output only] Deprecated. Use conditions instead.
  1453. // Additional information about the current status of this
  1454. // cluster, if available.
  1455. string status_message = 108 [deprecated = true];
  1456. // [Output only] The size of the address space on each node for hosting
  1457. // containers. This is provisioned from within the `container_ipv4_cidr`
  1458. // range. This field will only be set when cluster is in route-based network
  1459. // mode.
  1460. int32 node_ipv4_cidr_size = 109;
  1461. // [Output only] The IP address range of the Kubernetes services in
  1462. // this cluster, in
  1463. // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
  1464. // notation (e.g. `1.2.3.4/29`). Service addresses are
  1465. // typically put in the last `/16` from the container CIDR.
  1466. string services_ipv4_cidr = 110;
  1467. // Deprecated. Use node_pools.instance_group_urls.
  1468. repeated string instance_group_urls = 111 [deprecated = true];
  1469. // [Output only] The number of nodes currently in the cluster. Deprecated.
  1470. // Call Kubernetes API directly to retrieve node information.
  1471. int32 current_node_count = 112 [deprecated = true];
  1472. // [Output only] The time the cluster will be automatically
  1473. // deleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  1474. string expire_time = 113;
  1475. // [Output only] The name of the Google Compute Engine
  1476. // [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available)
  1477. // or
  1478. // [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available)
  1479. // in which the cluster resides.
  1480. string location = 114;
  1481. // Enable the ability to use Cloud TPUs in this cluster.
  1482. bool enable_tpu = 115;
  1483. // [Output only] The IP address range of the Cloud TPUs in this cluster, in
  1484. // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
  1485. // notation (e.g. `1.2.3.4/29`).
  1486. string tpu_ipv4_cidr_block = 116;
  1487. // Which conditions caused the current cluster state.
  1488. repeated StatusCondition conditions = 118;
  1489. // Autopilot configuration for the cluster.
  1490. Autopilot autopilot = 128;
  1491. // Output only. Unique id for the cluster.
  1492. string id = 129 [(google.api.field_behavior) = OUTPUT_ONLY];
  1493. // Default NodePool settings for the entire cluster. These settings are
  1494. // overridden if specified on the specific NodePool object.
  1495. optional NodePoolDefaults node_pool_defaults = 131;
  1496. // Logging configuration for the cluster.
  1497. LoggingConfig logging_config = 132;
  1498. // Monitoring configuration for the cluster.
  1499. MonitoringConfig monitoring_config = 133;
  1500. // Node pool configs that apply to all auto-provisioned node pools
  1501. // in autopilot clusters and node auto-provisioning enabled clusters.
  1502. NodePoolAutoConfig node_pool_auto_config = 136;
  1503. }
  1504. // Node pool configs that apply to all auto-provisioned node pools
  1505. // in autopilot clusters and node auto-provisioning enabled clusters.
  1506. message NodePoolAutoConfig {
  1507. // The list of instance tags applied to all nodes. Tags are used to identify
  1508. // valid sources or targets for network firewalls and are specified by
  1509. // the client during cluster creation. Each tag within the list
  1510. // must comply with RFC1035.
  1511. NetworkTags network_tags = 1;
  1512. }
  1513. // Subset of Nodepool message that has defaults.
  1514. message NodePoolDefaults {
  1515. // Subset of NodeConfig message that has defaults.
  1516. NodeConfigDefaults node_config_defaults = 1;
  1517. }
  1518. // Subset of NodeConfig message that has defaults.
  1519. message NodeConfigDefaults {
  1520. // GCFS (Google Container File System, also known as Riptide) options.
  1521. GcfsConfig gcfs_config = 1;
  1522. // Logging configuration for node pools.
  1523. NodePoolLoggingConfig logging_config = 3;
  1524. }
  1525. // ClusterUpdate describes an update to the cluster. Exactly one update can
  1526. // be applied to a cluster with each request, so at most one field can be
  1527. // provided.
  1528. message ClusterUpdate {
  1529. // The Kubernetes version to change the nodes to (typically an
  1530. // upgrade).
  1531. //
  1532. // Users may specify either explicit versions offered by
  1533. // Kubernetes Engine or version aliases, which have the following behavior:
  1534. //
  1535. // - "latest": picks the highest valid Kubernetes version
  1536. // - "1.X": picks the highest valid patch+gke.N patch in the 1.X version
  1537. // - "1.X.Y": picks the highest valid gke.N patch in the 1.X.Y version
  1538. // - "1.X.Y-gke.N": picks an explicit Kubernetes version
  1539. // - "-": picks the Kubernetes master version
  1540. string desired_node_version = 4;
  1541. // The monitoring service the cluster should use to write metrics.
  1542. // Currently available options:
  1543. //
  1544. // * "monitoring.googleapis.com/kubernetes" - The Cloud Monitoring
  1545. // service with a Kubernetes-native resource model
  1546. // * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no
  1547. // longer available as of GKE 1.15).
  1548. // * `none` - No metrics will be exported from the cluster.
  1549. //
  1550. // If left as an empty string,`monitoring.googleapis.com/kubernetes` will be
  1551. // used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions.
  1552. string desired_monitoring_service = 5;
  1553. // Configurations for the various addons available to run in the cluster.
  1554. AddonsConfig desired_addons_config = 6;
  1555. // The node pool to be upgraded. This field is mandatory if
  1556. // "desired_node_version", "desired_image_family" or
  1557. // "desired_node_pool_autoscaling" is specified and there is more than one
  1558. // node pool on the cluster.
  1559. string desired_node_pool_id = 7;
  1560. // The desired image type for the node pool.
  1561. // NOTE: Set the "desired_node_pool" field as well.
  1562. string desired_image_type = 8;
  1563. // Configuration of etcd encryption.
  1564. DatabaseEncryption desired_database_encryption = 46;
  1565. // Configuration for Workload Identity.
  1566. WorkloadIdentityConfig desired_workload_identity_config = 47;
  1567. // Configuration for issuance of mTLS keys and certificates to Kubernetes
  1568. // pods.
  1569. MeshCertificates desired_mesh_certificates = 67;
  1570. // Configuration for Shielded Nodes.
  1571. ShieldedNodes desired_shielded_nodes = 48;
  1572. // The desired configuration for the fine-grained cost management feature.
  1573. CostManagementConfig desired_cost_management_config = 49;
  1574. // DNSConfig contains clusterDNS config for this cluster.
  1575. DNSConfig desired_dns_config = 53;
  1576. // Autoscaler configuration for the node pool specified in
  1577. // desired_node_pool_id. If there is only one pool in the
  1578. // cluster and desired_node_pool_id is not provided then
  1579. // the change applies to that single node pool.
  1580. NodePoolAutoscaling desired_node_pool_autoscaling = 9;
  1581. // The desired list of Google Compute Engine
  1582. // [zones](https://cloud.google.com/compute/docs/zones#available) in which the
  1583. // cluster's nodes should be located.
  1584. //
  1585. // This list must always include the cluster's primary zone.
  1586. //
  1587. // Warning: changing cluster locations will update the locations of all node
  1588. // pools and will result in nodes being added and/or removed.
  1589. repeated string desired_locations = 10;
  1590. // The desired configuration options for master authorized networks feature.
  1591. MasterAuthorizedNetworksConfig desired_master_authorized_networks_config = 12;
  1592. // Cluster-level autoscaling configuration.
  1593. ClusterAutoscaling desired_cluster_autoscaling = 15;
  1594. // The desired configuration options for the Binary Authorization feature.
  1595. BinaryAuthorization desired_binary_authorization = 16;
  1596. // The logging service the cluster should use to write logs.
  1597. // Currently available options:
  1598. //
  1599. // * `logging.googleapis.com/kubernetes` - The Cloud Logging
  1600. // service with a Kubernetes-native resource model
  1601. // * `logging.googleapis.com` - The legacy Cloud Logging service (no longer
  1602. // available as of GKE 1.15).
  1603. // * `none` - no logs will be exported from the cluster.
  1604. //
  1605. // If left as an empty string,`logging.googleapis.com/kubernetes` will be
  1606. // used for GKE 1.14+ or `logging.googleapis.com` for earlier versions.
  1607. string desired_logging_service = 19;
  1608. // The desired configuration for exporting resource usage.
  1609. ResourceUsageExportConfig desired_resource_usage_export_config = 21;
  1610. // Cluster-level Vertical Pod Autoscaling configuration.
  1611. VerticalPodAutoscaling desired_vertical_pod_autoscaling = 22;
  1612. // The desired private cluster configuration.
  1613. PrivateClusterConfig desired_private_cluster_config = 25;
  1614. // The desired config of Intra-node visibility.
  1615. IntraNodeVisibilityConfig desired_intra_node_visibility_config = 26;
  1616. // The desired status of whether to disable default sNAT for this cluster.
  1617. DefaultSnatStatus desired_default_snat_status = 28;
  1618. // The desired release channel configuration.
  1619. ReleaseChannel desired_release_channel = 31;
  1620. // The desired L4 Internal Load Balancer Subsetting configuration.
  1621. ILBSubsettingConfig desired_l4ilb_subsetting_config = 39;
  1622. // The desired datapath provider for the cluster.
  1623. DatapathProvider desired_datapath_provider = 50;
  1624. // The desired state of IPv6 connectivity to Google Services.
  1625. PrivateIPv6GoogleAccess desired_private_ipv6_google_access = 51;
  1626. // The desired notification configuration.
  1627. NotificationConfig desired_notification_config = 55;
  1628. // The desired authenticator groups config for the cluster.
  1629. AuthenticatorGroupsConfig desired_authenticator_groups_config = 63;
  1630. // The desired logging configuration.
  1631. LoggingConfig desired_logging_config = 64;
  1632. // The desired monitoring configuration.
  1633. MonitoringConfig desired_monitoring_config = 65;
  1634. // The desired Identity Service component configuration.
  1635. IdentityServiceConfig desired_identity_service_config = 66;
  1636. // ServiceExternalIPsConfig specifies the config for the use of Services with
  1637. // ExternalIPs field.
  1638. ServiceExternalIPsConfig desired_service_external_ips_config = 60;
  1639. // Enable/Disable private endpoint for the cluster's master.
  1640. optional bool desired_enable_private_endpoint = 71;
  1641. // The Kubernetes version to change the master to.
  1642. //
  1643. // Users may specify either explicit versions offered by
  1644. // Kubernetes Engine or version aliases, which have the following behavior:
  1645. //
  1646. // - "latest": picks the highest valid Kubernetes version
  1647. // - "1.X": picks the highest valid patch+gke.N patch in the 1.X version
  1648. // - "1.X.Y": picks the highest valid gke.N patch in the 1.X.Y version
  1649. // - "1.X.Y-gke.N": picks an explicit Kubernetes version
  1650. // - "-": picks the default Kubernetes version
  1651. string desired_master_version = 100;
  1652. // The desired GCFS config for the cluster
  1653. GcfsConfig desired_gcfs_config = 109;
  1654. // The desired network tags that apply to all auto-provisioned node pools
  1655. // in autopilot clusters and node auto-provisioning enabled clusters.
  1656. NetworkTags desired_node_pool_auto_config_network_tags = 110;
  1657. // The desired config of Gateway API on this cluster.
  1658. GatewayAPIConfig desired_gateway_api_config = 114;
  1659. // The desired node pool logging configuration defaults for the cluster.
  1660. NodePoolLoggingConfig desired_node_pool_logging_config = 116;
  1661. }
  1662. // This operation resource represents operations that may have happened or are
  1663. // happening on the cluster. All fields are output only.
  1664. message Operation {
  1665. // Current status of the operation.
  1666. enum Status {
  1667. // Not set.
  1668. STATUS_UNSPECIFIED = 0;
  1669. // The operation has been created.
  1670. PENDING = 1;
  1671. // The operation is currently running.
  1672. RUNNING = 2;
  1673. // The operation is done, either cancelled or completed.
  1674. DONE = 3;
  1675. // The operation is aborting.
  1676. ABORTING = 4;
  1677. }
  1678. // Operation type.
  1679. enum Type {
  1680. // Not set.
  1681. TYPE_UNSPECIFIED = 0;
  1682. // Cluster create.
  1683. CREATE_CLUSTER = 1;
  1684. // Cluster delete.
  1685. DELETE_CLUSTER = 2;
  1686. // A master upgrade.
  1687. UPGRADE_MASTER = 3;
  1688. // A node upgrade.
  1689. UPGRADE_NODES = 4;
  1690. // Cluster repair.
  1691. REPAIR_CLUSTER = 5;
  1692. // Cluster update.
  1693. UPDATE_CLUSTER = 6;
  1694. // Node pool create.
  1695. CREATE_NODE_POOL = 7;
  1696. // Node pool delete.
  1697. DELETE_NODE_POOL = 8;
  1698. // Set node pool management.
  1699. SET_NODE_POOL_MANAGEMENT = 9;
  1700. // Automatic node pool repair.
  1701. AUTO_REPAIR_NODES = 10;
  1702. // Automatic node upgrade.
  1703. AUTO_UPGRADE_NODES = 11;
  1704. // Set labels.
  1705. SET_LABELS = 12;
  1706. // Set/generate master auth materials
  1707. SET_MASTER_AUTH = 13;
  1708. // Set node pool size.
  1709. SET_NODE_POOL_SIZE = 14;
  1710. // Updates network policy for a cluster.
  1711. SET_NETWORK_POLICY = 15;
  1712. // Set the maintenance policy.
  1713. SET_MAINTENANCE_POLICY = 16;
  1714. }
  1715. // The server-assigned ID for the operation.
  1716. string name = 1;
  1717. // The name of the Google Compute Engine
  1718. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  1719. // operation is taking place. This field is deprecated, use location instead.
  1720. string zone = 2 [deprecated = true];
  1721. // The operation type.
  1722. Type operation_type = 3;
  1723. // The current status of the operation.
  1724. Status status = 4;
  1725. // Detailed operation progress, if available.
  1726. string detail = 8;
  1727. // Output only. If an error has occurred, a textual description of the error.
  1728. // Deprecated. Use the field error instead.
  1729. string status_message = 5 [
  1730. deprecated = true,
  1731. (google.api.field_behavior) = OUTPUT_ONLY
  1732. ];
  1733. // Server-defined URL for the resource.
  1734. string self_link = 6;
  1735. // Server-defined URL for the target of the operation.
  1736. string target_link = 7;
  1737. // [Output only] The name of the Google Compute Engine
  1738. // [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available)
  1739. // or
  1740. // [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available)
  1741. // in which the cluster resides.
  1742. string location = 9;
  1743. // [Output only] The time the operation started, in
  1744. // [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  1745. string start_time = 10;
  1746. // [Output only] The time the operation completed, in
  1747. // [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  1748. string end_time = 11;
  1749. // Output only. [Output only] Progress information for an operation.
  1750. OperationProgress progress = 12 [(google.api.field_behavior) = OUTPUT_ONLY];
  1751. // Which conditions caused the current cluster state.
  1752. // Deprecated. Use field error instead.
  1753. repeated StatusCondition cluster_conditions = 13 [deprecated = true];
  1754. // Which conditions caused the current node pool state.
  1755. // Deprecated. Use field error instead.
  1756. repeated StatusCondition nodepool_conditions = 14 [deprecated = true];
  1757. // The error result of the operation in case of failure.
  1758. google.rpc.Status error = 15;
  1759. }
  1760. // Information about operation (or operation stage) progress.
  1761. message OperationProgress {
  1762. // Progress metric is (string, int|float|string) pair.
  1763. message Metric {
  1764. // Required. Metric name, e.g., "nodes total", "percent done".
  1765. string name = 1 [(google.api.field_behavior) = REQUIRED];
  1766. // Strictly one of the values is required.
  1767. oneof value {
  1768. // For metrics with integer value.
  1769. int64 int_value = 2;
  1770. // For metrics with floating point value.
  1771. double double_value = 3;
  1772. // For metrics with custom values (ratios, visual progress, etc.).
  1773. string string_value = 4;
  1774. }
  1775. }
  1776. // A non-parameterized string describing an operation stage.
  1777. // Unset for single-stage operations.
  1778. string name = 1;
  1779. // Status of an operation stage.
  1780. // Unset for single-stage operations.
  1781. Operation.Status status = 2;
  1782. // Progress metric bundle, for example:
  1783. // metrics: [{name: "nodes done", int_value: 15},
  1784. // {name: "nodes total", int_value: 32}]
  1785. // or
  1786. // metrics: [{name: "progress", double_value: 0.56},
  1787. // {name: "progress scale", double_value: 1.0}]
  1788. repeated Metric metrics = 3;
  1789. // Substages of an operation or a stage.
  1790. repeated OperationProgress stages = 4;
  1791. }
  1792. // CreateClusterRequest creates a cluster.
  1793. message CreateClusterRequest {
  1794. // Deprecated. The Google Developers Console [project ID or project
  1795. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  1796. // This field has been deprecated and replaced by the parent field.
  1797. string project_id = 1 [deprecated = true];
  1798. // Deprecated. The name of the Google Compute Engine
  1799. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  1800. // cluster resides. This field has been deprecated and replaced by the parent
  1801. // field.
  1802. string zone = 2 [deprecated = true];
  1803. // Required. A [cluster
  1804. // resource](https://cloud.google.com/container-engine/reference/rest/v1/projects.locations.clusters)
  1805. Cluster cluster = 3 [(google.api.field_behavior) = REQUIRED];
  1806. // The parent (project and location) where the cluster will be created.
  1807. // Specified in the format `projects/*/locations/*`.
  1808. string parent = 5;
  1809. }
  1810. // GetClusterRequest gets the settings of a cluster.
  1811. message GetClusterRequest {
  1812. // Deprecated. The Google Developers Console [project ID or project
  1813. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  1814. // This field has been deprecated and replaced by the name field.
  1815. string project_id = 1 [deprecated = true];
  1816. // Deprecated. The name of the Google Compute Engine
  1817. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  1818. // cluster resides. This field has been deprecated and replaced by the name
  1819. // field.
  1820. string zone = 2 [deprecated = true];
  1821. // Deprecated. The name of the cluster to retrieve.
  1822. // This field has been deprecated and replaced by the name field.
  1823. string cluster_id = 3 [deprecated = true];
  1824. // The name (project, location, cluster) of the cluster to retrieve.
  1825. // Specified in the format `projects/*/locations/*/clusters/*`.
  1826. string name = 5;
  1827. }
  1828. // UpdateClusterRequest updates the settings of a cluster.
  1829. message UpdateClusterRequest {
  1830. // Deprecated. The Google Developers Console [project ID or project
  1831. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  1832. // This field has been deprecated and replaced by the name field.
  1833. string project_id = 1 [deprecated = true];
  1834. // Deprecated. The name of the Google Compute Engine
  1835. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  1836. // cluster resides. This field has been deprecated and replaced by the name
  1837. // field.
  1838. string zone = 2 [deprecated = true];
  1839. // Deprecated. The name of the cluster to upgrade.
  1840. // This field has been deprecated and replaced by the name field.
  1841. string cluster_id = 3 [deprecated = true];
  1842. // Required. A description of the update.
  1843. ClusterUpdate update = 4 [(google.api.field_behavior) = REQUIRED];
  1844. // The name (project, location, cluster) of the cluster to update.
  1845. // Specified in the format `projects/*/locations/*/clusters/*`.
  1846. string name = 5;
  1847. }
  1848. // UpdateNodePoolRequests update a node pool's image and/or version.
  1849. message UpdateNodePoolRequest {
  1850. // Deprecated. The Google Developers Console [project ID or project
  1851. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  1852. // This field has been deprecated and replaced by the name field.
  1853. string project_id = 1 [deprecated = true];
  1854. // Deprecated. The name of the Google Compute Engine
  1855. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  1856. // cluster resides. This field has been deprecated and replaced by the name
  1857. // field.
  1858. string zone = 2 [deprecated = true];
  1859. // Deprecated. The name of the cluster to upgrade.
  1860. // This field has been deprecated and replaced by the name field.
  1861. string cluster_id = 3 [deprecated = true];
  1862. // Deprecated. The name of the node pool to upgrade.
  1863. // This field has been deprecated and replaced by the name field.
  1864. string node_pool_id = 4 [deprecated = true];
  1865. // Required. The Kubernetes version to change the nodes to (typically an
  1866. // upgrade).
  1867. //
  1868. // Users may specify either explicit versions offered by Kubernetes Engine or
  1869. // version aliases, which have the following behavior:
  1870. //
  1871. // - "latest": picks the highest valid Kubernetes version
  1872. // - "1.X": picks the highest valid patch+gke.N patch in the 1.X version
  1873. // - "1.X.Y": picks the highest valid gke.N patch in the 1.X.Y version
  1874. // - "1.X.Y-gke.N": picks an explicit Kubernetes version
  1875. // - "-": picks the Kubernetes master version
  1876. string node_version = 5 [(google.api.field_behavior) = REQUIRED];
  1877. // Required. The desired image type for the node pool.
  1878. string image_type = 6 [(google.api.field_behavior) = REQUIRED];
  1879. // The name (project, location, cluster, node pool) of the node pool to
  1880. // update. Specified in the format
  1881. // `projects/*/locations/*/clusters/*/nodePools/*`.
  1882. string name = 8;
  1883. // The desired list of Google Compute Engine
  1884. // [zones](https://cloud.google.com/compute/docs/zones#available) in which the
  1885. // node pool's nodes should be located. Changing the locations for a node pool
  1886. // will result in nodes being either created or removed from the node pool,
  1887. // depending on whether locations are being added or removed.
  1888. repeated string locations = 13;
  1889. // The desired workload metadata config for the node pool.
  1890. WorkloadMetadataConfig workload_metadata_config = 14;
  1891. // Upgrade settings control disruption and speed of the upgrade.
  1892. NodePool.UpgradeSettings upgrade_settings = 15;
  1893. // The desired network tags to be applied to all nodes in the node pool.
  1894. // If this field is not present, the tags will not be changed. Otherwise,
  1895. // the existing network tags will be *replaced* with the provided tags.
  1896. NetworkTags tags = 16;
  1897. // The desired node taints to be applied to all nodes in the node pool.
  1898. // If this field is not present, the taints will not be changed. Otherwise,
  1899. // the existing node taints will be *replaced* with the provided taints.
  1900. NodeTaints taints = 17;
  1901. // The desired node labels to be applied to all nodes in the node pool.
  1902. // If this field is not present, the labels will not be changed. Otherwise,
  1903. // the existing node labels will be *replaced* with the provided labels.
  1904. NodeLabels labels = 18;
  1905. // Parameters that can be configured on Linux nodes.
  1906. LinuxNodeConfig linux_node_config = 19;
  1907. // Node kubelet configs.
  1908. NodeKubeletConfig kubelet_config = 20;
  1909. // Node network config.
  1910. NodeNetworkConfig node_network_config = 21;
  1911. // GCFS config.
  1912. GcfsConfig gcfs_config = 22;
  1913. // Confidential nodes config.
  1914. // All the nodes in the node pool will be Confidential VM once enabled.
  1915. ConfidentialNodes confidential_nodes = 23;
  1916. // Enable or disable gvnic on the node pool.
  1917. VirtualNIC gvnic = 29;
  1918. // Enable or disable NCCL fast socket for the node pool.
  1919. FastSocket fast_socket = 31;
  1920. // Logging configuration.
  1921. NodePoolLoggingConfig logging_config = 32;
  1922. // The resource labels for the node pool to use to annotate any related
  1923. // Google Compute Engine resources.
  1924. ResourceLabels resource_labels = 33;
  1925. }
  1926. // SetNodePoolAutoscalingRequest sets the autoscaler settings of a node pool.
  1927. message SetNodePoolAutoscalingRequest {
  1928. // Deprecated. The Google Developers Console [project ID or project
  1929. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  1930. // This field has been deprecated and replaced by the name field.
  1931. string project_id = 1 [deprecated = true];
  1932. // Deprecated. The name of the Google Compute Engine
  1933. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  1934. // cluster resides. This field has been deprecated and replaced by the name
  1935. // field.
  1936. string zone = 2 [deprecated = true];
  1937. // Deprecated. The name of the cluster to upgrade.
  1938. // This field has been deprecated and replaced by the name field.
  1939. string cluster_id = 3 [deprecated = true];
  1940. // Deprecated. The name of the node pool to upgrade.
  1941. // This field has been deprecated and replaced by the name field.
  1942. string node_pool_id = 4 [deprecated = true];
  1943. // Required. Autoscaling configuration for the node pool.
  1944. NodePoolAutoscaling autoscaling = 5 [(google.api.field_behavior) = REQUIRED];
  1945. // The name (project, location, cluster, node pool) of the node pool to set
  1946. // autoscaler settings. Specified in the format
  1947. // `projects/*/locations/*/clusters/*/nodePools/*`.
  1948. string name = 6;
  1949. }
  1950. // SetLoggingServiceRequest sets the logging service of a cluster.
  1951. message SetLoggingServiceRequest {
  1952. // Deprecated. The Google Developers Console [project ID or project
  1953. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  1954. // This field has been deprecated and replaced by the name field.
  1955. string project_id = 1 [deprecated = true];
  1956. // Deprecated. The name of the Google Compute Engine
  1957. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  1958. // cluster resides. This field has been deprecated and replaced by the name
  1959. // field.
  1960. string zone = 2 [deprecated = true];
  1961. // Deprecated. The name of the cluster to upgrade.
  1962. // This field has been deprecated and replaced by the name field.
  1963. string cluster_id = 3 [deprecated = true];
  1964. // Required. The logging service the cluster should use to write logs.
  1965. // Currently available options:
  1966. //
  1967. // * `logging.googleapis.com/kubernetes` - The Cloud Logging
  1968. // service with a Kubernetes-native resource model
  1969. // * `logging.googleapis.com` - The legacy Cloud Logging service (no longer
  1970. // available as of GKE 1.15).
  1971. // * `none` - no logs will be exported from the cluster.
  1972. //
  1973. // If left as an empty string,`logging.googleapis.com/kubernetes` will be
  1974. // used for GKE 1.14+ or `logging.googleapis.com` for earlier versions.
  1975. string logging_service = 4 [(google.api.field_behavior) = REQUIRED];
  1976. // The name (project, location, cluster) of the cluster to set logging.
  1977. // Specified in the format `projects/*/locations/*/clusters/*`.
  1978. string name = 5;
  1979. }
  1980. // SetMonitoringServiceRequest sets the monitoring service of a cluster.
  1981. message SetMonitoringServiceRequest {
  1982. // Deprecated. The Google Developers Console [project ID or project
  1983. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  1984. // This field has been deprecated and replaced by the name field.
  1985. string project_id = 1 [deprecated = true];
  1986. // Deprecated. The name of the Google Compute Engine
  1987. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  1988. // cluster resides. This field has been deprecated and replaced by the name
  1989. // field.
  1990. string zone = 2 [deprecated = true];
  1991. // Deprecated. The name of the cluster to upgrade.
  1992. // This field has been deprecated and replaced by the name field.
  1993. string cluster_id = 3 [deprecated = true];
  1994. // Required. The monitoring service the cluster should use to write metrics.
  1995. // Currently available options:
  1996. //
  1997. // * "monitoring.googleapis.com/kubernetes" - The Cloud Monitoring
  1998. // service with a Kubernetes-native resource model
  1999. // * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no
  2000. // longer available as of GKE 1.15).
  2001. // * `none` - No metrics will be exported from the cluster.
  2002. //
  2003. // If left as an empty string,`monitoring.googleapis.com/kubernetes` will be
  2004. // used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions.
  2005. string monitoring_service = 4 [(google.api.field_behavior) = REQUIRED];
  2006. // The name (project, location, cluster) of the cluster to set monitoring.
  2007. // Specified in the format `projects/*/locations/*/clusters/*`.
  2008. string name = 6;
  2009. }
  2010. // SetAddonsConfigRequest sets the addons associated with the cluster.
  2011. message SetAddonsConfigRequest {
  2012. // Deprecated. The Google Developers Console [project ID or project
  2013. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  2014. // This field has been deprecated and replaced by the name field.
  2015. string project_id = 1 [deprecated = true];
  2016. // Deprecated. The name of the Google Compute Engine
  2017. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  2018. // cluster resides. This field has been deprecated and replaced by the name
  2019. // field.
  2020. string zone = 2 [deprecated = true];
  2021. // Deprecated. The name of the cluster to upgrade.
  2022. // This field has been deprecated and replaced by the name field.
  2023. string cluster_id = 3 [deprecated = true];
  2024. // Required. The desired configurations for the various addons available to run in the
  2025. // cluster.
  2026. AddonsConfig addons_config = 4 [(google.api.field_behavior) = REQUIRED];
  2027. // The name (project, location, cluster) of the cluster to set addons.
  2028. // Specified in the format `projects/*/locations/*/clusters/*`.
  2029. string name = 6;
  2030. }
  2031. // SetLocationsRequest sets the locations of the cluster.
  2032. message SetLocationsRequest {
  2033. // Deprecated. The Google Developers Console [project ID or project
  2034. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  2035. // This field has been deprecated and replaced by the name field.
  2036. string project_id = 1 [deprecated = true];
  2037. // Deprecated. The name of the Google Compute Engine
  2038. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  2039. // cluster resides. This field has been deprecated and replaced by the name
  2040. // field.
  2041. string zone = 2 [deprecated = true];
  2042. // Deprecated. The name of the cluster to upgrade.
  2043. // This field has been deprecated and replaced by the name field.
  2044. string cluster_id = 3 [deprecated = true];
  2045. // Required. The desired list of Google Compute Engine
  2046. // [zones](https://cloud.google.com/compute/docs/zones#available) in which the
  2047. // cluster's nodes should be located. Changing the locations a cluster is in
  2048. // will result in nodes being either created or removed from the cluster,
  2049. // depending on whether locations are being added or removed.
  2050. //
  2051. // This list must always include the cluster's primary zone.
  2052. repeated string locations = 4 [(google.api.field_behavior) = REQUIRED];
  2053. // The name (project, location, cluster) of the cluster to set locations.
  2054. // Specified in the format `projects/*/locations/*/clusters/*`.
  2055. string name = 6;
  2056. }
  2057. // UpdateMasterRequest updates the master of the cluster.
  2058. message UpdateMasterRequest {
  2059. // Deprecated. The Google Developers Console [project ID or project
  2060. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  2061. // This field has been deprecated and replaced by the name field.
  2062. string project_id = 1 [deprecated = true];
  2063. // Deprecated. The name of the Google Compute Engine
  2064. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  2065. // cluster resides. This field has been deprecated and replaced by the name
  2066. // field.
  2067. string zone = 2 [deprecated = true];
  2068. // Deprecated. The name of the cluster to upgrade.
  2069. // This field has been deprecated and replaced by the name field.
  2070. string cluster_id = 3 [deprecated = true];
  2071. // Required. The Kubernetes version to change the master to.
  2072. //
  2073. // Users may specify either explicit versions offered by Kubernetes Engine or
  2074. // version aliases, which have the following behavior:
  2075. //
  2076. // - "latest": picks the highest valid Kubernetes version
  2077. // - "1.X": picks the highest valid patch+gke.N patch in the 1.X version
  2078. // - "1.X.Y": picks the highest valid gke.N patch in the 1.X.Y version
  2079. // - "1.X.Y-gke.N": picks an explicit Kubernetes version
  2080. // - "-": picks the default Kubernetes version
  2081. string master_version = 4 [(google.api.field_behavior) = REQUIRED];
  2082. // The name (project, location, cluster) of the cluster to update.
  2083. // Specified in the format `projects/*/locations/*/clusters/*`.
  2084. string name = 7;
  2085. }
  2086. // SetMasterAuthRequest updates the admin password of a cluster.
  2087. message SetMasterAuthRequest {
  2088. // Operation type: what type update to perform.
  2089. enum Action {
  2090. // Operation is unknown and will error out.
  2091. UNKNOWN = 0;
  2092. // Set the password to a user generated value.
  2093. SET_PASSWORD = 1;
  2094. // Generate a new password and set it to that.
  2095. GENERATE_PASSWORD = 2;
  2096. // Set the username. If an empty username is provided, basic authentication
  2097. // is disabled for the cluster. If a non-empty username is provided, basic
  2098. // authentication is enabled, with either a provided password or a generated
  2099. // one.
  2100. SET_USERNAME = 3;
  2101. }
  2102. // Deprecated. The Google Developers Console [project ID or project
  2103. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  2104. // This field has been deprecated and replaced by the name field.
  2105. string project_id = 1 [deprecated = true];
  2106. // Deprecated. The name of the Google Compute Engine
  2107. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  2108. // cluster resides. This field has been deprecated and replaced by the name
  2109. // field.
  2110. string zone = 2 [deprecated = true];
  2111. // Deprecated. The name of the cluster to upgrade.
  2112. // This field has been deprecated and replaced by the name field.
  2113. string cluster_id = 3 [deprecated = true];
  2114. // Required. The exact form of action to be taken on the master auth.
  2115. Action action = 4 [(google.api.field_behavior) = REQUIRED];
  2116. // Required. A description of the update.
  2117. MasterAuth update = 5 [(google.api.field_behavior) = REQUIRED];
  2118. // The name (project, location, cluster) of the cluster to set auth.
  2119. // Specified in the format `projects/*/locations/*/clusters/*`.
  2120. string name = 7;
  2121. }
  2122. // DeleteClusterRequest deletes a cluster.
  2123. message DeleteClusterRequest {
  2124. // Deprecated. The Google Developers Console [project ID or project
  2125. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  2126. // This field has been deprecated and replaced by the name field.
  2127. string project_id = 1 [deprecated = true];
  2128. // Deprecated. The name of the Google Compute Engine
  2129. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  2130. // cluster resides. This field has been deprecated and replaced by the name
  2131. // field.
  2132. string zone = 2 [deprecated = true];
  2133. // Deprecated. The name of the cluster to delete.
  2134. // This field has been deprecated and replaced by the name field.
  2135. string cluster_id = 3 [deprecated = true];
  2136. // The name (project, location, cluster) of the cluster to delete.
  2137. // Specified in the format `projects/*/locations/*/clusters/*`.
  2138. string name = 4;
  2139. }
  2140. // ListClustersRequest lists clusters.
  2141. message ListClustersRequest {
  2142. // Deprecated. The Google Developers Console [project ID or project
  2143. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  2144. // This field has been deprecated and replaced by the parent field.
  2145. string project_id = 1 [deprecated = true];
  2146. // Deprecated. The name of the Google Compute Engine
  2147. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  2148. // cluster resides, or "-" for all zones. This field has been deprecated and
  2149. // replaced by the parent field.
  2150. string zone = 2 [deprecated = true];
  2151. // The parent (project and location) where the clusters will be listed.
  2152. // Specified in the format `projects/*/locations/*`.
  2153. // Location "-" matches all zones and all regions.
  2154. string parent = 4;
  2155. }
  2156. // ListClustersResponse is the result of ListClustersRequest.
  2157. message ListClustersResponse {
  2158. // A list of clusters in the project in the specified zone, or
  2159. // across all ones.
  2160. repeated Cluster clusters = 1;
  2161. // If any zones are listed here, the list of clusters returned
  2162. // may be missing those zones.
  2163. repeated string missing_zones = 2;
  2164. }
  2165. // GetOperationRequest gets a single operation.
  2166. message GetOperationRequest {
  2167. // Deprecated. The Google Developers Console [project ID or project
  2168. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  2169. // This field has been deprecated and replaced by the name field.
  2170. string project_id = 1 [deprecated = true];
  2171. // Deprecated. The name of the Google Compute Engine
  2172. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  2173. // cluster resides. This field has been deprecated and replaced by the name
  2174. // field.
  2175. string zone = 2 [deprecated = true];
  2176. // Deprecated. The server-assigned `name` of the operation.
  2177. // This field has been deprecated and replaced by the name field.
  2178. string operation_id = 3 [deprecated = true];
  2179. // The name (project, location, operation id) of the operation to get.
  2180. // Specified in the format `projects/*/locations/*/operations/*`.
  2181. string name = 5;
  2182. }
  2183. // ListOperationsRequest lists operations.
  2184. message ListOperationsRequest {
  2185. // Deprecated. The Google Developers Console [project ID or project
  2186. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  2187. // This field has been deprecated and replaced by the parent field.
  2188. string project_id = 1 [deprecated = true];
  2189. // Deprecated. The name of the Google Compute Engine
  2190. // [zone](https://cloud.google.com/compute/docs/zones#available) to return
  2191. // operations for, or `-` for all zones. This field has been deprecated and
  2192. // replaced by the parent field.
  2193. string zone = 2 [deprecated = true];
  2194. // The parent (project and location) where the operations will be listed.
  2195. // Specified in the format `projects/*/locations/*`.
  2196. // Location "-" matches all zones and all regions.
  2197. string parent = 4;
  2198. }
  2199. // CancelOperationRequest cancels a single operation.
  2200. message CancelOperationRequest {
  2201. // Deprecated. The Google Developers Console [project ID or project
  2202. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  2203. // This field has been deprecated and replaced by the name field.
  2204. string project_id = 1 [deprecated = true];
  2205. // Deprecated. The name of the Google Compute Engine
  2206. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  2207. // operation resides. This field has been deprecated and replaced by the name
  2208. // field.
  2209. string zone = 2 [deprecated = true];
  2210. // Deprecated. The server-assigned `name` of the operation.
  2211. // This field has been deprecated and replaced by the name field.
  2212. string operation_id = 3 [deprecated = true];
  2213. // The name (project, location, operation id) of the operation to cancel.
  2214. // Specified in the format `projects/*/locations/*/operations/*`.
  2215. string name = 4;
  2216. }
  2217. // ListOperationsResponse is the result of ListOperationsRequest.
  2218. message ListOperationsResponse {
  2219. // A list of operations in the project in the specified zone.
  2220. repeated Operation operations = 1;
  2221. // If any zones are listed here, the list of operations returned
  2222. // may be missing the operations from those zones.
  2223. repeated string missing_zones = 2;
  2224. }
  2225. // Gets the current Kubernetes Engine service configuration.
  2226. message GetServerConfigRequest {
  2227. // Deprecated. The Google Developers Console [project ID or project
  2228. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  2229. // This field has been deprecated and replaced by the name field.
  2230. string project_id = 1 [deprecated = true];
  2231. // Deprecated. The name of the Google Compute Engine
  2232. // [zone](https://cloud.google.com/compute/docs/zones#available) to return
  2233. // operations for. This field has been deprecated and replaced by the name
  2234. // field.
  2235. string zone = 2 [deprecated = true];
  2236. // The name (project and location) of the server config to get,
  2237. // specified in the format `projects/*/locations/*`.
  2238. string name = 4;
  2239. }
  2240. // Kubernetes Engine service configuration.
  2241. message ServerConfig {
  2242. // ReleaseChannelConfig exposes configuration for a release channel.
  2243. message ReleaseChannelConfig {
  2244. // The release channel this configuration applies to.
  2245. ReleaseChannel.Channel channel = 1;
  2246. // The default version for newly created clusters on the channel.
  2247. string default_version = 2;
  2248. // List of valid versions for the channel.
  2249. repeated string valid_versions = 4;
  2250. }
  2251. // Version of Kubernetes the service deploys by default.
  2252. string default_cluster_version = 1;
  2253. // List of valid node upgrade target versions, in descending order.
  2254. repeated string valid_node_versions = 3;
  2255. // Default image type.
  2256. string default_image_type = 4;
  2257. // List of valid image types.
  2258. repeated string valid_image_types = 5;
  2259. // List of valid master versions, in descending order.
  2260. repeated string valid_master_versions = 6;
  2261. // List of release channel configurations.
  2262. repeated ReleaseChannelConfig channels = 9;
  2263. }
  2264. // CreateNodePoolRequest creates a node pool for a cluster.
  2265. message CreateNodePoolRequest {
  2266. // Deprecated. The Google Developers Console [project ID or project
  2267. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  2268. // This field has been deprecated and replaced by the parent field.
  2269. string project_id = 1 [deprecated = true];
  2270. // Deprecated. The name of the Google Compute Engine
  2271. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  2272. // cluster resides. This field has been deprecated and replaced by the parent
  2273. // field.
  2274. string zone = 2 [deprecated = true];
  2275. // Deprecated. The name of the cluster.
  2276. // This field has been deprecated and replaced by the parent field.
  2277. string cluster_id = 3 [deprecated = true];
  2278. // Required. The node pool to create.
  2279. NodePool node_pool = 4 [(google.api.field_behavior) = REQUIRED];
  2280. // The parent (project, location, cluster name) where the node pool will be
  2281. // created. Specified in the format
  2282. // `projects/*/locations/*/clusters/*`.
  2283. string parent = 6;
  2284. }
  2285. // DeleteNodePoolRequest deletes a node pool for a cluster.
  2286. message DeleteNodePoolRequest {
  2287. // Deprecated. The Google Developers Console [project ID or project
  2288. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  2289. // This field has been deprecated and replaced by the name field.
  2290. string project_id = 1 [deprecated = true];
  2291. // Deprecated. The name of the Google Compute Engine
  2292. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  2293. // cluster resides. This field has been deprecated and replaced by the name
  2294. // field.
  2295. string zone = 2 [deprecated = true];
  2296. // Deprecated. The name of the cluster.
  2297. // This field has been deprecated and replaced by the name field.
  2298. string cluster_id = 3 [deprecated = true];
  2299. // Deprecated. The name of the node pool to delete.
  2300. // This field has been deprecated and replaced by the name field.
  2301. string node_pool_id = 4 [deprecated = true];
  2302. // The name (project, location, cluster, node pool id) of the node pool to
  2303. // delete. Specified in the format
  2304. // `projects/*/locations/*/clusters/*/nodePools/*`.
  2305. string name = 6;
  2306. }
  2307. // ListNodePoolsRequest lists the node pool(s) for a cluster.
  2308. message ListNodePoolsRequest {
  2309. // Deprecated. The Google Developers Console [project ID or project
  2310. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  2311. // This field has been deprecated and replaced by the parent field.
  2312. string project_id = 1 [deprecated = true];
  2313. // Deprecated. The name of the Google Compute Engine
  2314. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  2315. // cluster resides. This field has been deprecated and replaced by the parent
  2316. // field.
  2317. string zone = 2 [deprecated = true];
  2318. // Deprecated. The name of the cluster.
  2319. // This field has been deprecated and replaced by the parent field.
  2320. string cluster_id = 3 [deprecated = true];
  2321. // The parent (project, location, cluster name) where the node pools will be
  2322. // listed. Specified in the format `projects/*/locations/*/clusters/*`.
  2323. string parent = 5;
  2324. }
  2325. // GetNodePoolRequest retrieves a node pool for a cluster.
  2326. message GetNodePoolRequest {
  2327. // Deprecated. The Google Developers Console [project ID or project
  2328. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  2329. // This field has been deprecated and replaced by the name field.
  2330. string project_id = 1 [deprecated = true];
  2331. // Deprecated. The name of the Google Compute Engine
  2332. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  2333. // cluster resides. This field has been deprecated and replaced by the name
  2334. // field.
  2335. string zone = 2 [deprecated = true];
  2336. // Deprecated. The name of the cluster.
  2337. // This field has been deprecated and replaced by the name field.
  2338. string cluster_id = 3 [deprecated = true];
  2339. // Deprecated. The name of the node pool.
  2340. // This field has been deprecated and replaced by the name field.
  2341. string node_pool_id = 4 [deprecated = true];
  2342. // The name (project, location, cluster, node pool id) of the node pool to
  2343. // get. Specified in the format
  2344. // `projects/*/locations/*/clusters/*/nodePools/*`.
  2345. string name = 6;
  2346. }
  2347. // Settings for blue-green upgrade.
  2348. message BlueGreenSettings {
  2349. // Standard rollout policy is the default policy for blue-green.
  2350. message StandardRolloutPolicy {
  2351. // Blue pool size to drain in a batch.
  2352. oneof update_batch_size {
  2353. // Percentage of the blue pool nodes to drain in a batch.
  2354. // The range of this field should be (0.0, 1.0].
  2355. float batch_percentage = 1;
  2356. // Number of blue nodes to drain in a batch.
  2357. int32 batch_node_count = 2;
  2358. }
  2359. // Soak time after each batch gets drained. Default to zero.
  2360. optional google.protobuf.Duration batch_soak_duration = 3;
  2361. }
  2362. // The rollout policy controls the general rollout progress of blue-green.
  2363. oneof rollout_policy {
  2364. // Standard policy for the blue-green upgrade.
  2365. StandardRolloutPolicy standard_rollout_policy = 1;
  2366. }
  2367. // Time needed after draining entire blue pool. After this period, blue pool
  2368. // will be cleaned up.
  2369. optional google.protobuf.Duration node_pool_soak_duration = 2;
  2370. }
  2371. // NodePool contains the name and configuration for a cluster's node pool.
  2372. // Node pools are a set of nodes (i.e. VM's), with a common configuration and
  2373. // specification, under the control of the cluster master. They may have a set
  2374. // of Kubernetes labels applied to them, which may be used to reference them
  2375. // during pod scheduling. They may also be resized up or down, to accommodate
  2376. // the workload.
  2377. message NodePool {
  2378. // These upgrade settings control the level of parallelism and the level of
  2379. // disruption caused by an upgrade.
  2380. //
  2381. // maxUnavailable controls the number of nodes that can be simultaneously
  2382. // unavailable.
  2383. //
  2384. // maxSurge controls the number of additional nodes that can be added to the
  2385. // node pool temporarily for the time of the upgrade to increase the number of
  2386. // available nodes.
  2387. //
  2388. // (maxUnavailable + maxSurge) determines the level of parallelism (how many
  2389. // nodes are being upgraded at the same time).
  2390. //
  2391. // Note: upgrades inevitably introduce some disruption since workloads need to
  2392. // be moved from old nodes to new, upgraded ones. Even if maxUnavailable=0,
  2393. // this holds true. (Disruption stays within the limits of
  2394. // PodDisruptionBudget, if it is configured.)
  2395. //
  2396. // Consider a hypothetical node pool with 5 nodes having maxSurge=2,
  2397. // maxUnavailable=1. This means the upgrade process upgrades 3 nodes
  2398. // simultaneously. It creates 2 additional (upgraded) nodes, then it brings
  2399. // down 3 old (not yet upgraded) nodes at the same time. This ensures that
  2400. // there are always at least 4 nodes available.
  2401. //
  2402. // These upgrade settings configure the upgrade strategy for the node pool.
  2403. // Use strategy to switch between the strategies applied to the node pool.
  2404. //
  2405. // If the strategy is ROLLING, use max_surge and max_unavailable to control
  2406. // the level of parallelism and the level of disruption caused by upgrade.
  2407. // 1. maxSurge controls the number of additional nodes that can be added to
  2408. // the node pool temporarily for the time of the upgrade to increase the
  2409. // number of available nodes.
  2410. // 2. maxUnavailable controls the number of nodes that can be simultaneously
  2411. // unavailable.
  2412. // 3. (maxUnavailable + maxSurge) determines the level of parallelism (how
  2413. // many nodes are being upgraded at the same time).
  2414. //
  2415. // If the strategy is BLUE_GREEN, use blue_green_settings to configure the
  2416. // blue-green upgrade related settings.
  2417. // 1. standard_rollout_policy is the default policy. The policy is used to
  2418. // control the way blue pool gets drained. The draining is executed in the
  2419. // batch mode. The batch size could be specified as either percentage of the
  2420. // node pool size or the number of nodes. batch_soak_duration is the soak
  2421. // time after each batch gets drained.
  2422. // 2. node_pool_soak_duration is the soak time after all blue nodes are
  2423. // drained. After this period, the blue pool nodes will be deleted.
  2424. message UpgradeSettings {
  2425. // The maximum number of nodes that can be created beyond the current size
  2426. // of the node pool during the upgrade process.
  2427. int32 max_surge = 1;
  2428. // The maximum number of nodes that can be simultaneously unavailable during
  2429. // the upgrade process. A node is considered available if its status is
  2430. // Ready.
  2431. int32 max_unavailable = 2;
  2432. // Update strategy of the node pool.
  2433. optional NodePoolUpdateStrategy strategy = 3;
  2434. // Settings for blue-green upgrade strategy.
  2435. optional BlueGreenSettings blue_green_settings = 4;
  2436. }
  2437. // UpdateInfo contains resource (instance groups, etc), status and other
  2438. // intermediate information relevant to a node pool upgrade.
  2439. message UpdateInfo {
  2440. // Information relevant to blue-green upgrade.
  2441. message BlueGreenInfo {
  2442. // Phase represents the different stages blue-green upgrade is running in.
  2443. enum Phase {
  2444. // Unspecified phase.
  2445. PHASE_UNSPECIFIED = 0;
  2446. // blue-green upgrade has been initiated.
  2447. UPDATE_STARTED = 1;
  2448. // Start creating green pool nodes.
  2449. CREATING_GREEN_POOL = 2;
  2450. // Start cordoning blue pool nodes.
  2451. CORDONING_BLUE_POOL = 3;
  2452. // Start draining blue pool nodes.
  2453. DRAINING_BLUE_POOL = 4;
  2454. // Start soaking time after draining entire blue pool.
  2455. NODE_POOL_SOAKING = 5;
  2456. // Start deleting blue nodes.
  2457. DELETING_BLUE_POOL = 6;
  2458. // Rollback has been initiated.
  2459. ROLLBACK_STARTED = 7;
  2460. }
  2461. // Current blue-green upgrade phase.
  2462. Phase phase = 1;
  2463. // The resource URLs of the [managed instance groups]
  2464. // (/compute/docs/instance-groups/creating-groups-of-managed-instances)
  2465. // associated with blue pool.
  2466. repeated string blue_instance_group_urls = 2;
  2467. // The resource URLs of the [managed instance groups]
  2468. // (/compute/docs/instance-groups/creating-groups-of-managed-instances)
  2469. // associated with green pool.
  2470. repeated string green_instance_group_urls = 3;
  2471. // Time to start deleting blue pool to complete blue-green upgrade,
  2472. // in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  2473. string blue_pool_deletion_start_time = 4;
  2474. // Version of green pool.
  2475. string green_pool_version = 5;
  2476. }
  2477. // Information of a blue-green upgrade.
  2478. BlueGreenInfo blue_green_info = 1;
  2479. }
  2480. // The current status of the node pool instance.
  2481. enum Status {
  2482. // Not set.
  2483. STATUS_UNSPECIFIED = 0;
  2484. // The PROVISIONING state indicates the node pool is being created.
  2485. PROVISIONING = 1;
  2486. // The RUNNING state indicates the node pool has been created
  2487. // and is fully usable.
  2488. RUNNING = 2;
  2489. // The RUNNING_WITH_ERROR state indicates the node pool has been created
  2490. // and is partially usable. Some error state has occurred and some
  2491. // functionality may be impaired. Customer may need to reissue a request
  2492. // or trigger a new update.
  2493. RUNNING_WITH_ERROR = 3;
  2494. // The RECONCILING state indicates that some work is actively being done on
  2495. // the node pool, such as upgrading node software. Details can
  2496. // be found in the `statusMessage` field.
  2497. RECONCILING = 4;
  2498. // The STOPPING state indicates the node pool is being deleted.
  2499. STOPPING = 5;
  2500. // The ERROR state indicates the node pool may be unusable. Details
  2501. // can be found in the `statusMessage` field.
  2502. ERROR = 6;
  2503. }
  2504. // PlacementPolicy defines the placement policy used by the node pool.
  2505. message PlacementPolicy {
  2506. // Type defines the type of placement policy.
  2507. enum Type {
  2508. // TYPE_UNSPECIFIED specifies no requirements on nodes
  2509. // placement.
  2510. TYPE_UNSPECIFIED = 0;
  2511. // COMPACT specifies node placement in the same availability domain to
  2512. // ensure low communication latency.
  2513. COMPACT = 1;
  2514. }
  2515. // The type of placement.
  2516. Type type = 1;
  2517. }
  2518. // The name of the node pool.
  2519. string name = 1;
  2520. // The node configuration of the pool.
  2521. NodeConfig config = 2;
  2522. // The initial node count for the pool. You must ensure that your
  2523. // Compute Engine [resource quota](https://cloud.google.com/compute/quotas)
  2524. // is sufficient for this number of instances. You must also have available
  2525. // firewall and routes quota.
  2526. int32 initial_node_count = 3;
  2527. // The list of Google Compute Engine
  2528. // [zones](https://cloud.google.com/compute/docs/zones#available) in which the
  2529. // NodePool's nodes should be located.
  2530. //
  2531. // If this value is unspecified during node pool creation, the
  2532. // [Cluster.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters#Cluster.FIELDS.locations)
  2533. // value will be used, instead.
  2534. //
  2535. // Warning: changing node pool locations will result in nodes being added
  2536. // and/or removed.
  2537. repeated string locations = 13;
  2538. // Networking configuration for this NodePool. If specified, it overrides the
  2539. // cluster-level defaults.
  2540. NodeNetworkConfig network_config = 14;
  2541. // [Output only] Server-defined URL for the resource.
  2542. string self_link = 100;
  2543. // The version of the Kubernetes of this node.
  2544. string version = 101;
  2545. // [Output only] The resource URLs of the [managed instance
  2546. // groups](https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances)
  2547. // associated with this node pool.
  2548. // During the node pool blue-green upgrade operation, the URLs contain both
  2549. // blue and green resources.
  2550. repeated string instance_group_urls = 102;
  2551. // [Output only] The status of the nodes in this pool instance.
  2552. Status status = 103;
  2553. // [Output only] Deprecated. Use conditions instead.
  2554. // Additional information about the current status of this
  2555. // node pool instance, if available.
  2556. string status_message = 104 [deprecated = true];
  2557. // Autoscaler configuration for this NodePool. Autoscaler is enabled
  2558. // only if a valid configuration is present.
  2559. NodePoolAutoscaling autoscaling = 4;
  2560. // NodeManagement configuration for this NodePool.
  2561. NodeManagement management = 5;
  2562. // The constraint on the maximum number of pods that can be run
  2563. // simultaneously on a node in the node pool.
  2564. MaxPodsConstraint max_pods_constraint = 6;
  2565. // Which conditions caused the current node pool state.
  2566. repeated StatusCondition conditions = 105;
  2567. // [Output only] The pod CIDR block size per node in this node pool.
  2568. int32 pod_ipv4_cidr_size = 7;
  2569. // Upgrade settings control disruption and speed of the upgrade.
  2570. UpgradeSettings upgrade_settings = 107;
  2571. // Specifies the node placement policy.
  2572. PlacementPolicy placement_policy = 108;
  2573. // Output only. [Output only] Update info contains relevant information during a node
  2574. // pool update.
  2575. UpdateInfo update_info = 109 [(google.api.field_behavior) = OUTPUT_ONLY];
  2576. }
  2577. // NodeManagement defines the set of node management services turned on for the
  2578. // node pool.
  2579. message NodeManagement {
  2580. // A flag that specifies whether node auto-upgrade is enabled for the node
  2581. // pool. If enabled, node auto-upgrade helps keep the nodes in your node pool
  2582. // up to date with the latest release version of Kubernetes.
  2583. bool auto_upgrade = 1;
  2584. // A flag that specifies whether the node auto-repair is enabled for the node
  2585. // pool. If enabled, the nodes in this node pool will be monitored and, if
  2586. // they fail health checks too many times, an automatic repair action will be
  2587. // triggered.
  2588. bool auto_repair = 2;
  2589. // Specifies the Auto Upgrade knobs for the node pool.
  2590. AutoUpgradeOptions upgrade_options = 10;
  2591. }
  2592. // AutoUpgradeOptions defines the set of options for the user to control how
  2593. // the Auto Upgrades will proceed.
  2594. message AutoUpgradeOptions {
  2595. // [Output only] This field is set when upgrades are about to commence
  2596. // with the approximate start time for the upgrades, in
  2597. // [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  2598. string auto_upgrade_start_time = 1;
  2599. // [Output only] This field is set when upgrades are about to commence
  2600. // with the description of the upgrade.
  2601. string description = 2;
  2602. }
  2603. // MaintenancePolicy defines the maintenance policy to be used for the cluster.
  2604. message MaintenancePolicy {
  2605. // Specifies the maintenance window in which maintenance may be performed.
  2606. MaintenanceWindow window = 1;
  2607. // A hash identifying the version of this policy, so that updates to fields of
  2608. // the policy won't accidentally undo intermediate changes (and so that users
  2609. // of the API unaware of some fields won't accidentally remove other fields).
  2610. // Make a `get()` request to the cluster to get the current
  2611. // resource version and include it with requests to set the policy.
  2612. string resource_version = 3;
  2613. }
  2614. // MaintenanceWindow defines the maintenance window to be used for the cluster.
  2615. message MaintenanceWindow {
  2616. oneof policy {
  2617. // DailyMaintenanceWindow specifies a daily maintenance operation window.
  2618. DailyMaintenanceWindow daily_maintenance_window = 2;
  2619. // RecurringWindow specifies some number of recurring time periods for
  2620. // maintenance to occur. The time windows may be overlapping. If no
  2621. // maintenance windows are set, maintenance can occur at any time.
  2622. RecurringTimeWindow recurring_window = 3;
  2623. }
  2624. // Exceptions to maintenance window. Non-emergency maintenance should not
  2625. // occur in these windows.
  2626. map<string, TimeWindow> maintenance_exclusions = 4;
  2627. }
  2628. // Represents an arbitrary window of time.
  2629. message TimeWindow {
  2630. oneof options {
  2631. // MaintenanceExclusionOptions provides maintenance exclusion related
  2632. // options.
  2633. MaintenanceExclusionOptions maintenance_exclusion_options = 3;
  2634. }
  2635. // The time that the window first starts.
  2636. google.protobuf.Timestamp start_time = 1;
  2637. // The time that the window ends. The end time should take place after the
  2638. // start time.
  2639. google.protobuf.Timestamp end_time = 2;
  2640. }
  2641. // Represents the Maintenance exclusion option.
  2642. message MaintenanceExclusionOptions {
  2643. // Scope of exclusion.
  2644. enum Scope {
  2645. // NO_UPGRADES excludes all upgrades, including patch upgrades and minor
  2646. // upgrades across control planes and nodes. This is the default exclusion
  2647. // behavior.
  2648. NO_UPGRADES = 0;
  2649. // NO_MINOR_UPGRADES excludes all minor upgrades for the cluster, only
  2650. // patches are allowed.
  2651. NO_MINOR_UPGRADES = 1;
  2652. // NO_MINOR_OR_NODE_UPGRADES excludes all minor upgrades for the cluster,
  2653. // and also exclude all node pool upgrades. Only control
  2654. // plane patches are allowed.
  2655. NO_MINOR_OR_NODE_UPGRADES = 2;
  2656. }
  2657. // Scope specifies the upgrade scope which upgrades are blocked by the
  2658. // exclusion.
  2659. Scope scope = 1;
  2660. }
  2661. // Represents an arbitrary window of time that recurs.
  2662. message RecurringTimeWindow {
  2663. // The window of the first recurrence.
  2664. TimeWindow window = 1;
  2665. // An RRULE (https://tools.ietf.org/html/rfc5545#section-3.8.5.3) for how
  2666. // this window reccurs. They go on for the span of time between the start and
  2667. // end time.
  2668. //
  2669. // For example, to have something repeat every weekday, you'd use:
  2670. // `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR`
  2671. //
  2672. // To repeat some window daily (equivalent to the DailyMaintenanceWindow):
  2673. // `FREQ=DAILY`
  2674. //
  2675. // For the first weekend of every month:
  2676. // `FREQ=MONTHLY;BYSETPOS=1;BYDAY=SA,SU`
  2677. //
  2678. // This specifies how frequently the window starts. Eg, if you wanted to have
  2679. // a 9-5 UTC-4 window every weekday, you'd use something like:
  2680. // ```
  2681. // start time = 2019-01-01T09:00:00-0400
  2682. // end time = 2019-01-01T17:00:00-0400
  2683. // recurrence = FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
  2684. // ```
  2685. //
  2686. // Windows can span multiple days. Eg, to make the window encompass every
  2687. // weekend from midnight Saturday till the last minute of Sunday UTC:
  2688. // ```
  2689. // start time = 2019-01-05T00:00:00Z
  2690. // end time = 2019-01-07T23:59:00Z
  2691. // recurrence = FREQ=WEEKLY;BYDAY=SA
  2692. // ```
  2693. //
  2694. // Note the start and end time's specific dates are largely arbitrary except
  2695. // to specify duration of the window and when it first starts.
  2696. // The FREQ values of HOURLY, MINUTELY, and SECONDLY are not supported.
  2697. string recurrence = 2;
  2698. }
  2699. // Time window specified for daily maintenance operations.
  2700. message DailyMaintenanceWindow {
  2701. // Time within the maintenance window to start the maintenance operations.
  2702. // Time format should be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt)
  2703. // format "HH:MM", where HH : [00-23] and MM : [00-59] GMT.
  2704. string start_time = 2;
  2705. // [Output only] Duration of the time window, automatically chosen to be
  2706. // smallest possible in the given scenario.
  2707. // Duration will be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt)
  2708. // format "PTnHnMnS".
  2709. string duration = 3;
  2710. }
  2711. // SetNodePoolManagementRequest sets the node management properties of a node
  2712. // pool.
  2713. message SetNodePoolManagementRequest {
  2714. // Deprecated. The Google Developers Console [project ID or project
  2715. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  2716. // This field has been deprecated and replaced by the name field.
  2717. string project_id = 1 [deprecated = true];
  2718. // Deprecated. The name of the Google Compute Engine
  2719. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  2720. // cluster resides. This field has been deprecated and replaced by the name
  2721. // field.
  2722. string zone = 2 [deprecated = true];
  2723. // Deprecated. The name of the cluster to update.
  2724. // This field has been deprecated and replaced by the name field.
  2725. string cluster_id = 3 [deprecated = true];
  2726. // Deprecated. The name of the node pool to update.
  2727. // This field has been deprecated and replaced by the name field.
  2728. string node_pool_id = 4 [deprecated = true];
  2729. // Required. NodeManagement configuration for the node pool.
  2730. NodeManagement management = 5 [(google.api.field_behavior) = REQUIRED];
  2731. // The name (project, location, cluster, node pool id) of the node pool to set
  2732. // management properties. Specified in the format
  2733. // `projects/*/locations/*/clusters/*/nodePools/*`.
  2734. string name = 7;
  2735. }
  2736. // SetNodePoolSizeRequest sets the size of a node pool.
  2737. message SetNodePoolSizeRequest {
  2738. // Deprecated. The Google Developers Console [project ID or project
  2739. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  2740. // This field has been deprecated and replaced by the name field.
  2741. string project_id = 1 [deprecated = true];
  2742. // Deprecated. The name of the Google Compute Engine
  2743. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  2744. // cluster resides. This field has been deprecated and replaced by the name
  2745. // field.
  2746. string zone = 2 [deprecated = true];
  2747. // Deprecated. The name of the cluster to update.
  2748. // This field has been deprecated and replaced by the name field.
  2749. string cluster_id = 3 [deprecated = true];
  2750. // Deprecated. The name of the node pool to update.
  2751. // This field has been deprecated and replaced by the name field.
  2752. string node_pool_id = 4 [deprecated = true];
  2753. // Required. The desired node count for the pool.
  2754. int32 node_count = 5 [(google.api.field_behavior) = REQUIRED];
  2755. // The name (project, location, cluster, node pool id) of the node pool to set
  2756. // size.
  2757. // Specified in the format `projects/*/locations/*/clusters/*/nodePools/*`.
  2758. string name = 7;
  2759. }
  2760. // CompleteNodePoolUpgradeRequest sets the name of target node pool to complete
  2761. // upgrade.
  2762. message CompleteNodePoolUpgradeRequest {
  2763. // The name (project, location, cluster, node pool id) of the node pool to
  2764. // complete upgrade.
  2765. // Specified in the format `projects/*/locations/*/clusters/*/nodePools/*`.
  2766. string name = 1;
  2767. }
  2768. // RollbackNodePoolUpgradeRequest rollbacks the previously Aborted or Failed
  2769. // NodePool upgrade. This will be an no-op if the last upgrade successfully
  2770. // completed.
  2771. message RollbackNodePoolUpgradeRequest {
  2772. // Deprecated. The Google Developers Console [project ID or project
  2773. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  2774. // This field has been deprecated and replaced by the name field.
  2775. string project_id = 1 [deprecated = true];
  2776. // Deprecated. The name of the Google Compute Engine
  2777. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  2778. // cluster resides. This field has been deprecated and replaced by the name
  2779. // field.
  2780. string zone = 2 [deprecated = true];
  2781. // Deprecated. The name of the cluster to rollback.
  2782. // This field has been deprecated and replaced by the name field.
  2783. string cluster_id = 3 [deprecated = true];
  2784. // Deprecated. The name of the node pool to rollback.
  2785. // This field has been deprecated and replaced by the name field.
  2786. string node_pool_id = 4 [deprecated = true];
  2787. // The name (project, location, cluster, node pool id) of the node poll to
  2788. // rollback upgrade.
  2789. // Specified in the format `projects/*/locations/*/clusters/*/nodePools/*`.
  2790. string name = 6;
  2791. // Option for rollback to ignore the PodDisruptionBudget.
  2792. // Default value is false.
  2793. bool respect_pdb = 7;
  2794. }
  2795. // ListNodePoolsResponse is the result of ListNodePoolsRequest.
  2796. message ListNodePoolsResponse {
  2797. // A list of node pools for a cluster.
  2798. repeated NodePool node_pools = 1;
  2799. }
  2800. // ClusterAutoscaling contains global, per-cluster information
  2801. // required by Cluster Autoscaler to automatically adjust
  2802. // the size of the cluster and create/delete
  2803. // node pools based on the current needs.
  2804. message ClusterAutoscaling {
  2805. // Defines possible options for autoscaling_profile field.
  2806. enum AutoscalingProfile {
  2807. // No change to autoscaling configuration.
  2808. PROFILE_UNSPECIFIED = 0;
  2809. // Prioritize optimizing utilization of resources.
  2810. OPTIMIZE_UTILIZATION = 1;
  2811. // Use default (balanced) autoscaling configuration.
  2812. BALANCED = 2;
  2813. }
  2814. // Enables automatic node pool creation and deletion.
  2815. bool enable_node_autoprovisioning = 1;
  2816. // Contains global constraints regarding minimum and maximum
  2817. // amount of resources in the cluster.
  2818. repeated ResourceLimit resource_limits = 2;
  2819. // Defines autoscaling behaviour.
  2820. AutoscalingProfile autoscaling_profile = 3;
  2821. // AutoprovisioningNodePoolDefaults contains defaults for a node pool
  2822. // created by NAP.
  2823. AutoprovisioningNodePoolDefaults autoprovisioning_node_pool_defaults = 4;
  2824. // The list of Google Compute Engine
  2825. // [zones](https://cloud.google.com/compute/docs/zones#available) in which the
  2826. // NodePool's nodes can be created by NAP.
  2827. repeated string autoprovisioning_locations = 5;
  2828. }
  2829. // AutoprovisioningNodePoolDefaults contains defaults for a node pool created
  2830. // by NAP.
  2831. message AutoprovisioningNodePoolDefaults {
  2832. // Scopes that are used by NAP when creating node pools.
  2833. repeated string oauth_scopes = 1;
  2834. // The Google Cloud Platform Service Account to be used by the node VMs.
  2835. string service_account = 2;
  2836. // Specifies the upgrade settings for NAP created node pools
  2837. NodePool.UpgradeSettings upgrade_settings = 3;
  2838. // Specifies the node management options for NAP created node-pools.
  2839. NodeManagement management = 4;
  2840. // Deprecated. Minimum CPU platform to be used for NAP created node pools.
  2841. // The instance may be scheduled on the specified or newer CPU platform.
  2842. // Applicable values are the friendly names of CPU platforms, such as
  2843. // minCpuPlatform: Intel Haswell or
  2844. // minCpuPlatform: Intel Sandy Bridge. For more
  2845. // information, read [how to specify min CPU
  2846. // platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform).
  2847. // This field is deprecated, min_cpu_platform should be specified using
  2848. // https://cloud.google.com/requested-min-cpu-platform label selector on the
  2849. // pod.
  2850. // To unset the min cpu platform field pass "automatic"
  2851. // as field value.
  2852. string min_cpu_platform = 5 [deprecated = true];
  2853. // Size of the disk attached to each node, specified in GB.
  2854. // The smallest allowed disk size is 10GB.
  2855. //
  2856. // If unspecified, the default disk size is 100GB.
  2857. int32 disk_size_gb = 6;
  2858. // Type of the disk attached to each node (e.g. 'pd-standard', 'pd-ssd' or
  2859. // 'pd-balanced')
  2860. //
  2861. // If unspecified, the default disk type is 'pd-standard'
  2862. string disk_type = 7;
  2863. // Shielded Instance options.
  2864. ShieldedInstanceConfig shielded_instance_config = 8;
  2865. // The Customer Managed Encryption Key used to encrypt the boot disk attached
  2866. // to each node in the node pool. This should be of the form
  2867. // projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME].
  2868. // For more information about protecting resources with Cloud KMS Keys please
  2869. // see:
  2870. // https://cloud.google.com/compute/docs/disks/customer-managed-encryption
  2871. string boot_disk_kms_key = 9;
  2872. // The image type to use for NAP created node.
  2873. string image_type = 10;
  2874. }
  2875. // Contains information about amount of some resource in the cluster.
  2876. // For memory, value should be in GB.
  2877. message ResourceLimit {
  2878. // Resource name "cpu", "memory" or gpu-specific string.
  2879. string resource_type = 1;
  2880. // Minimum amount of the resource in the cluster.
  2881. int64 minimum = 2;
  2882. // Maximum amount of the resource in the cluster.
  2883. int64 maximum = 3;
  2884. }
  2885. // NodePoolAutoscaling contains information required by cluster autoscaler to
  2886. // adjust the size of the node pool to the current cluster usage.
  2887. message NodePoolAutoscaling {
  2888. // Location policy specifies how zones are picked when scaling up the
  2889. // nodepool.
  2890. enum LocationPolicy {
  2891. // Not set.
  2892. LOCATION_POLICY_UNSPECIFIED = 0;
  2893. // BALANCED is a best effort policy that aims to balance the sizes of
  2894. // different zones.
  2895. BALANCED = 1;
  2896. // ANY policy picks zones that have the highest capacity available.
  2897. ANY = 2;
  2898. }
  2899. // Is autoscaling enabled for this node pool.
  2900. bool enabled = 1;
  2901. // Minimum number of nodes for one location in the NodePool. Must be >= 1 and
  2902. // <= max_node_count.
  2903. int32 min_node_count = 2;
  2904. // Maximum number of nodes for one location in the NodePool. Must be >=
  2905. // min_node_count. There has to be enough quota to scale up the cluster.
  2906. int32 max_node_count = 3;
  2907. // Can this node pool be deleted automatically.
  2908. bool autoprovisioned = 4;
  2909. // Location policy used when scaling up a nodepool.
  2910. LocationPolicy location_policy = 5;
  2911. // Minimum number of nodes in the node pool. Must be greater than 1 less than
  2912. // total_max_node_count.
  2913. // The total_*_node_count fields are mutually exclusive with the *_node_count
  2914. // fields.
  2915. int32 total_min_node_count = 6;
  2916. // Maximum number of nodes in the node pool. Must be greater than
  2917. // total_min_node_count. There has to be enough quota to scale up the cluster.
  2918. // The total_*_node_count fields are mutually exclusive with the *_node_count
  2919. // fields.
  2920. int32 total_max_node_count = 7;
  2921. }
  2922. // SetLabelsRequest sets the Google Cloud Platform labels on a Google Container
  2923. // Engine cluster, which will in turn set them for Google Compute Engine
  2924. // resources used by that cluster
  2925. message SetLabelsRequest {
  2926. // Deprecated. The Google Developers Console [project ID or project
  2927. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  2928. // This field has been deprecated and replaced by the name field.
  2929. string project_id = 1 [deprecated = true];
  2930. // Deprecated. The name of the Google Compute Engine
  2931. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  2932. // cluster resides. This field has been deprecated and replaced by the name
  2933. // field.
  2934. string zone = 2 [deprecated = true];
  2935. // Deprecated. The name of the cluster.
  2936. // This field has been deprecated and replaced by the name field.
  2937. string cluster_id = 3 [deprecated = true];
  2938. // Required. The labels to set for that cluster.
  2939. map<string, string> resource_labels = 4 [(google.api.field_behavior) = REQUIRED];
  2940. // Required. The fingerprint of the previous set of labels for this resource,
  2941. // used to detect conflicts. The fingerprint is initially generated by
  2942. // Kubernetes Engine and changes after every request to modify or update
  2943. // labels. You must always provide an up-to-date fingerprint hash when
  2944. // updating or changing labels. Make a `get()` request to the
  2945. // resource to get the latest fingerprint.
  2946. string label_fingerprint = 5 [(google.api.field_behavior) = REQUIRED];
  2947. // The name (project, location, cluster name) of the cluster to set labels.
  2948. // Specified in the format `projects/*/locations/*/clusters/*`.
  2949. string name = 7;
  2950. }
  2951. // SetLegacyAbacRequest enables or disables the ABAC authorization mechanism for
  2952. // a cluster.
  2953. message SetLegacyAbacRequest {
  2954. // Deprecated. The Google Developers Console [project ID or project
  2955. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  2956. // This field has been deprecated and replaced by the name field.
  2957. string project_id = 1 [deprecated = true];
  2958. // Deprecated. The name of the Google Compute Engine
  2959. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  2960. // cluster resides. This field has been deprecated and replaced by the name
  2961. // field.
  2962. string zone = 2 [deprecated = true];
  2963. // Deprecated. The name of the cluster to update.
  2964. // This field has been deprecated and replaced by the name field.
  2965. string cluster_id = 3 [deprecated = true];
  2966. // Required. Whether ABAC authorization will be enabled in the cluster.
  2967. bool enabled = 4 [(google.api.field_behavior) = REQUIRED];
  2968. // The name (project, location, cluster name) of the cluster to set legacy
  2969. // abac. Specified in the format `projects/*/locations/*/clusters/*`.
  2970. string name = 6;
  2971. }
  2972. // StartIPRotationRequest creates a new IP for the cluster and then performs
  2973. // a node upgrade on each node pool to point to the new IP.
  2974. message StartIPRotationRequest {
  2975. // Deprecated. The Google Developers Console [project ID or project
  2976. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  2977. // This field has been deprecated and replaced by the name field.
  2978. string project_id = 1 [deprecated = true];
  2979. // Deprecated. The name of the Google Compute Engine
  2980. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  2981. // cluster resides. This field has been deprecated and replaced by the name
  2982. // field.
  2983. string zone = 2 [deprecated = true];
  2984. // Deprecated. The name of the cluster.
  2985. // This field has been deprecated and replaced by the name field.
  2986. string cluster_id = 3 [deprecated = true];
  2987. // The name (project, location, cluster name) of the cluster to start IP
  2988. // rotation. Specified in the format `projects/*/locations/*/clusters/*`.
  2989. string name = 6;
  2990. // Whether to rotate credentials during IP rotation.
  2991. bool rotate_credentials = 7;
  2992. }
  2993. // CompleteIPRotationRequest moves the cluster master back into single-IP mode.
  2994. message CompleteIPRotationRequest {
  2995. // Deprecated. The Google Developers Console [project ID or project
  2996. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  2997. // This field has been deprecated and replaced by the name field.
  2998. string project_id = 1 [deprecated = true];
  2999. // Deprecated. The name of the Google Compute Engine
  3000. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  3001. // cluster resides. This field has been deprecated and replaced by the name
  3002. // field.
  3003. string zone = 2 [deprecated = true];
  3004. // Deprecated. The name of the cluster.
  3005. // This field has been deprecated and replaced by the name field.
  3006. string cluster_id = 3 [deprecated = true];
  3007. // The name (project, location, cluster name) of the cluster to complete IP
  3008. // rotation. Specified in the format `projects/*/locations/*/clusters/*`.
  3009. string name = 7;
  3010. }
  3011. // AcceleratorConfig represents a Hardware Accelerator request.
  3012. message AcceleratorConfig {
  3013. // The number of the accelerator cards exposed to an instance.
  3014. int64 accelerator_count = 1;
  3015. // The accelerator type resource name. List of supported accelerators
  3016. // [here](https://cloud.google.com/compute/docs/gpus)
  3017. string accelerator_type = 2;
  3018. // Size of partitions to create on the GPU. Valid values are described in the
  3019. // NVIDIA [mig user
  3020. // guide](https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#partitioning).
  3021. string gpu_partition_size = 3;
  3022. // The configuration for GPU sharing options.
  3023. optional GPUSharingConfig gpu_sharing_config = 5;
  3024. }
  3025. // GPUSharingConfig represents the GPU sharing configuration for Hardware
  3026. // Accelerators.
  3027. message GPUSharingConfig {
  3028. // The type of GPU sharing strategy currently provided.
  3029. enum GPUSharingStrategy {
  3030. // Default value.
  3031. GPU_SHARING_STRATEGY_UNSPECIFIED = 0;
  3032. // GPUs are time-shared between containers.
  3033. TIME_SHARING = 1;
  3034. }
  3035. // The max number of containers that can share a physical GPU.
  3036. int64 max_shared_clients_per_gpu = 1;
  3037. // The type of GPU sharing strategy to enable on the GPU node.
  3038. optional GPUSharingStrategy gpu_sharing_strategy = 2;
  3039. }
  3040. // WorkloadMetadataConfig defines the metadata configuration to expose to
  3041. // workloads on the node pool.
  3042. message WorkloadMetadataConfig {
  3043. // Mode is the configuration for how to expose metadata to workloads running
  3044. // on the node.
  3045. enum Mode {
  3046. // Not set.
  3047. MODE_UNSPECIFIED = 0;
  3048. // Expose all Compute Engine metadata to pods.
  3049. GCE_METADATA = 1;
  3050. // Run the GKE Metadata Server on this node. The GKE Metadata Server exposes
  3051. // a metadata API to workloads that is compatible with the V1 Compute
  3052. // Metadata APIs exposed by the Compute Engine and App Engine Metadata
  3053. // Servers. This feature can only be enabled if Workload Identity is enabled
  3054. // at the cluster level.
  3055. GKE_METADATA = 2;
  3056. }
  3057. // Mode is the configuration for how to expose metadata to workloads running
  3058. // on the node pool.
  3059. Mode mode = 2;
  3060. }
  3061. // SetNetworkPolicyRequest enables/disables network policy for a cluster.
  3062. message SetNetworkPolicyRequest {
  3063. // Deprecated. The Google Developers Console [project ID or project
  3064. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  3065. // This field has been deprecated and replaced by the name field.
  3066. string project_id = 1 [deprecated = true];
  3067. // Deprecated. The name of the Google Compute Engine
  3068. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  3069. // cluster resides. This field has been deprecated and replaced by the name
  3070. // field.
  3071. string zone = 2 [deprecated = true];
  3072. // Deprecated. The name of the cluster.
  3073. // This field has been deprecated and replaced by the name field.
  3074. string cluster_id = 3 [deprecated = true];
  3075. // Required. Configuration options for the NetworkPolicy feature.
  3076. NetworkPolicy network_policy = 4 [(google.api.field_behavior) = REQUIRED];
  3077. // The name (project, location, cluster name) of the cluster to set networking
  3078. // policy. Specified in the format `projects/*/locations/*/clusters/*`.
  3079. string name = 6;
  3080. }
  3081. // SetMaintenancePolicyRequest sets the maintenance policy for a cluster.
  3082. message SetMaintenancePolicyRequest {
  3083. // Required. The Google Developers Console [project ID or project
  3084. // number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  3085. string project_id = 1 [(google.api.field_behavior) = REQUIRED];
  3086. // Required. The name of the Google Compute Engine
  3087. // [zone](https://cloud.google.com/compute/docs/zones#available) in which the
  3088. // cluster resides.
  3089. string zone = 2 [(google.api.field_behavior) = REQUIRED];
  3090. // Required. The name of the cluster to update.
  3091. string cluster_id = 3 [(google.api.field_behavior) = REQUIRED];
  3092. // Required. The maintenance policy to be set for the cluster. An empty field
  3093. // clears the existing maintenance policy.
  3094. MaintenancePolicy maintenance_policy = 4 [(google.api.field_behavior) = REQUIRED];
  3095. // The name (project, location, cluster name) of the cluster to set
  3096. // maintenance policy.
  3097. // Specified in the format `projects/*/locations/*/clusters/*`.
  3098. string name = 5;
  3099. }
  3100. // StatusCondition describes why a cluster or a node pool has a certain status
  3101. // (e.g., ERROR or DEGRADED).
  3102. message StatusCondition {
  3103. // Code for each condition
  3104. enum Code {
  3105. // UNKNOWN indicates a generic condition.
  3106. UNKNOWN = 0;
  3107. // GCE_STOCKOUT indicates that Google Compute Engine resources are
  3108. // temporarily unavailable.
  3109. GCE_STOCKOUT = 1;
  3110. // GKE_SERVICE_ACCOUNT_DELETED indicates that the user deleted their robot
  3111. // service account.
  3112. GKE_SERVICE_ACCOUNT_DELETED = 2;
  3113. // Google Compute Engine quota was exceeded.
  3114. GCE_QUOTA_EXCEEDED = 3;
  3115. // Cluster state was manually changed by an SRE due to a system logic error.
  3116. SET_BY_OPERATOR = 4;
  3117. // Unable to perform an encrypt operation against the CloudKMS key used for
  3118. // etcd level encryption.
  3119. CLOUD_KMS_KEY_ERROR = 7;
  3120. // Cluster CA is expiring soon.
  3121. CA_EXPIRING = 9;
  3122. }
  3123. // Machine-friendly representation of the condition
  3124. // Deprecated. Use canonical_code instead.
  3125. Code code = 1 [deprecated = true];
  3126. // Human-friendly representation of the condition
  3127. string message = 2;
  3128. // Canonical code of the condition.
  3129. google.rpc.Code canonical_code = 3;
  3130. }
  3131. // NetworkConfig reports the relative names of network & subnetwork.
  3132. message NetworkConfig {
  3133. // Output only. The relative name of the Google Compute Engine
  3134. // [network][google.container.v1.NetworkConfig.network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks)
  3135. // to which the cluster is connected. Example:
  3136. // projects/my-project/global/networks/my-network
  3137. string network = 1;
  3138. // Output only. The relative name of the Google Compute Engine
  3139. // [subnetwork](https://cloud.google.com/compute/docs/vpc) to which the
  3140. // cluster is connected. Example:
  3141. // projects/my-project/regions/us-central1/subnetworks/my-subnet
  3142. string subnetwork = 2;
  3143. // Whether Intra-node visibility is enabled for this cluster.
  3144. // This makes same node pod to pod traffic visible for VPC network.
  3145. bool enable_intra_node_visibility = 5;
  3146. // Whether the cluster disables default in-node sNAT rules. In-node sNAT rules
  3147. // will be disabled when default_snat_status is disabled. When disabled is set
  3148. // to false, default IP masquerade rules will be applied to the nodes to
  3149. // prevent sNAT on cluster internal traffic.
  3150. DefaultSnatStatus default_snat_status = 7;
  3151. // Whether L4ILB Subsetting is enabled for this cluster.
  3152. bool enable_l4ilb_subsetting = 10;
  3153. // The desired datapath provider for this cluster. By default, uses the
  3154. // IPTables-based kube-proxy implementation.
  3155. DatapathProvider datapath_provider = 11;
  3156. // The desired state of IPv6 connectivity to Google Services.
  3157. // By default, no private IPv6 access to or from Google Services (all access
  3158. // will be via IPv4)
  3159. PrivateIPv6GoogleAccess private_ipv6_google_access = 12;
  3160. // DNSConfig contains clusterDNS config for this cluster.
  3161. DNSConfig dns_config = 13;
  3162. // ServiceExternalIPsConfig specifies if services with externalIPs field are
  3163. // blocked or not.
  3164. ServiceExternalIPsConfig service_external_ips_config = 15;
  3165. // GatewayAPIConfig contains the desired config of Gateway API on this
  3166. // cluster.
  3167. GatewayAPIConfig gateway_api_config = 16;
  3168. }
  3169. // GatewayAPIConfig contains the desired config of Gateway API on this cluster.
  3170. message GatewayAPIConfig {
  3171. // Channel describes if/how Gateway API should be installed and implemented in
  3172. // a cluster.
  3173. enum Channel {
  3174. // Default value.
  3175. CHANNEL_UNSPECIFIED = 0;
  3176. // Gateway API support is disabled
  3177. CHANNEL_DISABLED = 1;
  3178. // Gateway API support is enabled, experimental CRDs are installed
  3179. CHANNEL_EXPERIMENTAL = 3;
  3180. // Gateway API support is enabled, standard CRDs are installed
  3181. CHANNEL_STANDARD = 4;
  3182. }
  3183. // The Gateway API release channel to use for Gateway API.
  3184. Channel channel = 1;
  3185. }
  3186. // Config to block services with externalIPs field.
  3187. message ServiceExternalIPsConfig {
  3188. // Whether Services with ExternalIPs field are allowed or not.
  3189. bool enabled = 1;
  3190. }
  3191. // GetOpenIDConfigRequest gets the OIDC discovery document for the
  3192. // cluster. See the OpenID Connect Discovery 1.0 specification for details.
  3193. message GetOpenIDConfigRequest {
  3194. // The cluster (project, location, cluster name) to get the discovery document
  3195. // for. Specified in the format `projects/*/locations/*/clusters/*`.
  3196. string parent = 1;
  3197. }
  3198. // GetOpenIDConfigResponse is an OIDC discovery document for the cluster.
  3199. // See the OpenID Connect Discovery 1.0 specification for details.
  3200. message GetOpenIDConfigResponse {
  3201. // OIDC Issuer.
  3202. string issuer = 1;
  3203. // JSON Web Key uri.
  3204. string jwks_uri = 2;
  3205. // Supported response types.
  3206. repeated string response_types_supported = 3;
  3207. // Supported subject types.
  3208. repeated string subject_types_supported = 4;
  3209. // supported ID Token signing Algorithms.
  3210. repeated string id_token_signing_alg_values_supported = 5;
  3211. // Supported claims.
  3212. repeated string claims_supported = 6;
  3213. // Supported grant types.
  3214. repeated string grant_types = 7;
  3215. }
  3216. // GetJSONWebKeysRequest gets the public component of the keys used by the
  3217. // cluster to sign token requests. This will be the jwks_uri for the discover
  3218. // document returned by getOpenIDConfig. See the OpenID Connect
  3219. // Discovery 1.0 specification for details.
  3220. message GetJSONWebKeysRequest {
  3221. // The cluster (project, location, cluster name) to get keys for. Specified in
  3222. // the format `projects/*/locations/*/clusters/*`.
  3223. string parent = 1;
  3224. }
  3225. // Jwk is a JSON Web Key as specified in RFC 7517
  3226. message Jwk {
  3227. // Key Type.
  3228. string kty = 1;
  3229. // Algorithm.
  3230. string alg = 2;
  3231. // Permitted uses for the public keys.
  3232. string use = 3;
  3233. // Key ID.
  3234. string kid = 4;
  3235. // Used for RSA keys.
  3236. string n = 5;
  3237. // Used for RSA keys.
  3238. string e = 6;
  3239. // Used for ECDSA keys.
  3240. string x = 7;
  3241. // Used for ECDSA keys.
  3242. string y = 8;
  3243. // Used for ECDSA keys.
  3244. string crv = 9;
  3245. }
  3246. // GetJSONWebKeysResponse is a valid JSON Web Key Set as specififed in rfc 7517
  3247. message GetJSONWebKeysResponse {
  3248. // The public component of the keys used by the cluster to sign token
  3249. // requests.
  3250. repeated Jwk keys = 1;
  3251. }
  3252. // ReleaseChannel indicates which release channel a cluster is
  3253. // subscribed to. Release channels are arranged in order of risk.
  3254. //
  3255. // When a cluster is subscribed to a release channel, Google maintains
  3256. // both the master version and the node version. Node auto-upgrade
  3257. // defaults to true and cannot be disabled.
  3258. message ReleaseChannel {
  3259. // Possible values for 'channel'.
  3260. enum Channel {
  3261. // No channel specified.
  3262. UNSPECIFIED = 0;
  3263. // RAPID channel is offered on an early access basis for customers who want
  3264. // to test new releases.
  3265. //
  3266. // WARNING: Versions available in the RAPID Channel may be subject to
  3267. // unresolved issues with no known workaround and are not subject to any
  3268. // SLAs.
  3269. RAPID = 1;
  3270. // Clusters subscribed to REGULAR receive versions that are considered GA
  3271. // quality. REGULAR is intended for production users who want to take
  3272. // advantage of new features.
  3273. REGULAR = 2;
  3274. // Clusters subscribed to STABLE receive versions that are known to be
  3275. // stable and reliable in production.
  3276. STABLE = 3;
  3277. }
  3278. // channel specifies which release channel the cluster is subscribed to.
  3279. Channel channel = 1;
  3280. }
  3281. // Configuration for fine-grained cost management feature.
  3282. message CostManagementConfig {
  3283. // Whether the feature is enabled or not.
  3284. bool enabled = 1;
  3285. }
  3286. // IntraNodeVisibilityConfig contains the desired config of the intra-node
  3287. // visibility on this cluster.
  3288. message IntraNodeVisibilityConfig {
  3289. // Enables intra node visibility for this cluster.
  3290. bool enabled = 1;
  3291. }
  3292. // ILBSubsettingConfig contains the desired config of L4 Internal LoadBalancer
  3293. // subsetting on this cluster.
  3294. message ILBSubsettingConfig {
  3295. // Enables l4 ILB subsetting for this cluster.
  3296. bool enabled = 1;
  3297. }
  3298. // DNSConfig contains the desired set of options for configuring clusterDNS.
  3299. message DNSConfig {
  3300. // Provider lists the various in-cluster DNS providers.
  3301. enum Provider {
  3302. // Default value
  3303. PROVIDER_UNSPECIFIED = 0;
  3304. // Use GKE default DNS provider(kube-dns) for DNS resolution.
  3305. PLATFORM_DEFAULT = 1;
  3306. // Use CloudDNS for DNS resolution.
  3307. CLOUD_DNS = 2;
  3308. }
  3309. // DNSScope lists the various scopes of access to cluster DNS records.
  3310. enum DNSScope {
  3311. // Default value, will be inferred as cluster scope.
  3312. DNS_SCOPE_UNSPECIFIED = 0;
  3313. // DNS records are accessible from within the VPC.
  3314. VPC_SCOPE = 2;
  3315. }
  3316. // cluster_dns indicates which in-cluster DNS provider should be used.
  3317. Provider cluster_dns = 1;
  3318. // cluster_dns_scope indicates the scope of access to cluster DNS records.
  3319. DNSScope cluster_dns_scope = 2;
  3320. // cluster_dns_domain is the suffix used for all cluster service records.
  3321. string cluster_dns_domain = 3;
  3322. }
  3323. // Constraints applied to pods.
  3324. message MaxPodsConstraint {
  3325. // Constraint enforced on the max num of pods per node.
  3326. int64 max_pods_per_node = 1;
  3327. }
  3328. // Configuration for the use of Kubernetes Service Accounts in GCP IAM
  3329. // policies.
  3330. message WorkloadIdentityConfig {
  3331. // The workload pool to attach all Kubernetes service accounts to.
  3332. string workload_pool = 2;
  3333. }
  3334. // IdentityServiceConfig is configuration for Identity Service which allows
  3335. // customers to use external identity providers with the K8S API
  3336. message IdentityServiceConfig {
  3337. // Whether to enable the Identity Service component
  3338. bool enabled = 1;
  3339. }
  3340. // Configuration for issuance of mTLS keys and certificates to Kubernetes pods.
  3341. message MeshCertificates {
  3342. // enable_certificates controls issuance of workload mTLS certificates.
  3343. //
  3344. // If set, the GKE Workload Identity Certificates controller and node agent
  3345. // will be deployed in the cluster, which can then be configured by creating a
  3346. // WorkloadCertificateConfig Custom Resource.
  3347. //
  3348. // Requires Workload Identity
  3349. // ([workload_pool][google.container.v1.WorkloadIdentityConfig.workload_pool]
  3350. // must be non-empty).
  3351. google.protobuf.BoolValue enable_certificates = 1;
  3352. }
  3353. // Configuration of etcd encryption.
  3354. message DatabaseEncryption {
  3355. // State of etcd encryption.
  3356. enum State {
  3357. // Should never be set
  3358. UNKNOWN = 0;
  3359. // Secrets in etcd are encrypted.
  3360. ENCRYPTED = 1;
  3361. // Secrets in etcd are stored in plain text (at etcd level) - this is
  3362. // unrelated to Compute Engine level full disk encryption.
  3363. DECRYPTED = 2;
  3364. }
  3365. // Denotes the state of etcd encryption.
  3366. State state = 2;
  3367. // Name of CloudKMS key to use for the encryption of secrets in etcd.
  3368. // Ex. projects/my-project/locations/global/keyRings/my-ring/cryptoKeys/my-key
  3369. string key_name = 1;
  3370. }
  3371. // ListUsableSubnetworksRequest requests the list of usable subnetworks
  3372. // available to a user for creating clusters.
  3373. message ListUsableSubnetworksRequest {
  3374. // The parent project where subnetworks are usable.
  3375. // Specified in the format `projects/*`.
  3376. string parent = 1;
  3377. // Filtering currently only supports equality on the networkProjectId and must
  3378. // be in the form: "networkProjectId=[PROJECTID]", where `networkProjectId`
  3379. // is the project which owns the listed subnetworks. This defaults to the
  3380. // parent project ID.
  3381. string filter = 2;
  3382. // The max number of results per page that should be returned. If the number
  3383. // of available results is larger than `page_size`, a `next_page_token` is
  3384. // returned which can be used to get the next page of results in subsequent
  3385. // requests. Acceptable values are 0 to 500, inclusive. (Default: 500)
  3386. int32 page_size = 3;
  3387. // Specifies a page token to use. Set this to the nextPageToken returned by
  3388. // previous list requests to get the next page of results.
  3389. string page_token = 4;
  3390. }
  3391. // ListUsableSubnetworksResponse is the response of
  3392. // ListUsableSubnetworksRequest.
  3393. message ListUsableSubnetworksResponse {
  3394. // A list of usable subnetworks in the specified network project.
  3395. repeated UsableSubnetwork subnetworks = 1;
  3396. // This token allows you to get the next page of results for list requests.
  3397. // If the number of results is larger than `page_size`, use the
  3398. // `next_page_token` as a value for the query parameter `page_token` in the
  3399. // next request. The value will become empty when there are no more pages.
  3400. string next_page_token = 2;
  3401. }
  3402. // Secondary IP range of a usable subnetwork.
  3403. message UsableSubnetworkSecondaryRange {
  3404. // Status shows the current usage of a secondary IP range.
  3405. enum Status {
  3406. // UNKNOWN is the zero value of the Status enum. It's not a valid status.
  3407. UNKNOWN = 0;
  3408. // UNUSED denotes that this range is unclaimed by any cluster.
  3409. UNUSED = 1;
  3410. // IN_USE_SERVICE denotes that this range is claimed by a cluster for
  3411. // services. It cannot be used for other clusters.
  3412. IN_USE_SERVICE = 2;
  3413. // IN_USE_SHAREABLE_POD denotes this range was created by the network admin
  3414. // and is currently claimed by a cluster for pods. It can only be used by
  3415. // other clusters as a pod range.
  3416. IN_USE_SHAREABLE_POD = 3;
  3417. // IN_USE_MANAGED_POD denotes this range was created by GKE and is claimed
  3418. // for pods. It cannot be used for other clusters.
  3419. IN_USE_MANAGED_POD = 4;
  3420. }
  3421. // The name associated with this subnetwork secondary range, used when adding
  3422. // an alias IP range to a VM instance.
  3423. string range_name = 1;
  3424. // The range of IP addresses belonging to this subnetwork secondary range.
  3425. string ip_cidr_range = 2;
  3426. // This field is to determine the status of the secondary range programmably.
  3427. Status status = 3;
  3428. }
  3429. // UsableSubnetwork resource returns the subnetwork name, its associated network
  3430. // and the primary CIDR range.
  3431. message UsableSubnetwork {
  3432. // Subnetwork Name.
  3433. // Example: projects/my-project/regions/us-central1/subnetworks/my-subnet
  3434. string subnetwork = 1;
  3435. // Network Name.
  3436. // Example: projects/my-project/global/networks/my-network
  3437. string network = 2;
  3438. // The range of internal addresses that are owned by this subnetwork.
  3439. string ip_cidr_range = 3;
  3440. // Secondary IP ranges.
  3441. repeated UsableSubnetworkSecondaryRange secondary_ip_ranges = 4;
  3442. // A human readable status message representing the reasons for cases where
  3443. // the caller cannot use the secondary ranges under the subnet. For example if
  3444. // the secondary_ip_ranges is empty due to a permission issue, an insufficient
  3445. // permission message will be given by status_message.
  3446. string status_message = 5;
  3447. }
  3448. // Configuration for exporting cluster resource usages.
  3449. message ResourceUsageExportConfig {
  3450. // Parameters for using BigQuery as the destination of resource usage export.
  3451. message BigQueryDestination {
  3452. // The ID of a BigQuery Dataset.
  3453. string dataset_id = 1;
  3454. }
  3455. // Parameters for controlling consumption metering.
  3456. message ConsumptionMeteringConfig {
  3457. // Whether to enable consumption metering for this cluster. If enabled, a
  3458. // second BigQuery table will be created to hold resource consumption
  3459. // records.
  3460. bool enabled = 1;
  3461. }
  3462. // Configuration to use BigQuery as usage export destination.
  3463. BigQueryDestination bigquery_destination = 1;
  3464. // Whether to enable network egress metering for this cluster. If enabled, a
  3465. // daemonset will be created in the cluster to meter network egress traffic.
  3466. bool enable_network_egress_metering = 2;
  3467. // Configuration to enable resource consumption metering.
  3468. ConsumptionMeteringConfig consumption_metering_config = 3;
  3469. }
  3470. // VerticalPodAutoscaling contains global, per-cluster information
  3471. // required by Vertical Pod Autoscaler to automatically adjust
  3472. // the resources of pods controlled by it.
  3473. message VerticalPodAutoscaling {
  3474. // Enables vertical pod autoscaling.
  3475. bool enabled = 1;
  3476. }
  3477. // DefaultSnatStatus contains the desired state of whether default sNAT should
  3478. // be disabled on the cluster.
  3479. message DefaultSnatStatus {
  3480. // Disables cluster default sNAT rules.
  3481. bool disabled = 1;
  3482. }
  3483. // Configuration of Shielded Nodes feature.
  3484. message ShieldedNodes {
  3485. // Whether Shielded Nodes features are enabled on all nodes in this cluster.
  3486. bool enabled = 1;
  3487. }
  3488. // Configuration of gVNIC feature.
  3489. message VirtualNIC {
  3490. // Whether gVNIC features are enabled in the node pool.
  3491. bool enabled = 1;
  3492. }
  3493. // Configuration of Fast Socket feature.
  3494. message FastSocket {
  3495. // Whether Fast Socket features are enabled in the node pool.
  3496. bool enabled = 1;
  3497. }
  3498. // PrivateIPv6GoogleAccess controls whether and how the pods can communicate
  3499. // with Google Services through gRPC over IPv6.
  3500. enum PrivateIPv6GoogleAccess {
  3501. // Default value. Same as DISABLED
  3502. PRIVATE_IPV6_GOOGLE_ACCESS_UNSPECIFIED = 0;
  3503. // No private access to or from Google Services
  3504. PRIVATE_IPV6_GOOGLE_ACCESS_DISABLED = 1;
  3505. // Enables private IPv6 access to Google Services from GKE
  3506. PRIVATE_IPV6_GOOGLE_ACCESS_TO_GOOGLE = 2;
  3507. // Enables priate IPv6 access to and from Google Services
  3508. PRIVATE_IPV6_GOOGLE_ACCESS_BIDIRECTIONAL = 3;
  3509. }
  3510. // NotificationConfig is the configuration of notifications.
  3511. message NotificationConfig {
  3512. // Types of notifications currently supported. Can be used to filter what
  3513. // notifications are sent.
  3514. enum EventType {
  3515. // Not set, will be ignored.
  3516. EVENT_TYPE_UNSPECIFIED = 0;
  3517. // Corresponds with UpgradeAvailableEvent.
  3518. UPGRADE_AVAILABLE_EVENT = 1;
  3519. // Corresponds with UpgradeEvent.
  3520. UPGRADE_EVENT = 2;
  3521. // Corresponds with SecurityBulletinEvent.
  3522. SECURITY_BULLETIN_EVENT = 3;
  3523. }
  3524. // Pub/Sub specific notification config.
  3525. message PubSub {
  3526. // Enable notifications for Pub/Sub.
  3527. bool enabled = 1;
  3528. // The desired Pub/Sub topic to which notifications will be
  3529. // sent by GKE. Format is `projects/{project}/topics/{topic}`.
  3530. string topic = 2 [(google.api.resource_reference) = {
  3531. type: "pubsub.googleapis.com/Topic"
  3532. }];
  3533. // Allows filtering to one or more specific event types. If no filter is
  3534. // specified, or if a filter is specified with no event types, all event
  3535. // types will be sent
  3536. Filter filter = 3;
  3537. }
  3538. // Allows filtering to one or more specific event types. If event types are
  3539. // present, those and only those event types will be transmitted to the
  3540. // cluster. Other types will be skipped. If no filter is specified, or no
  3541. // event types are present, all event types will be sent
  3542. message Filter {
  3543. // Event types to allowlist.
  3544. repeated EventType event_type = 1;
  3545. }
  3546. // Notification config for Pub/Sub.
  3547. PubSub pubsub = 1;
  3548. }
  3549. // ConfidentialNodes is configuration for the confidential nodes feature, which
  3550. // makes nodes run on confidential VMs.
  3551. message ConfidentialNodes {
  3552. // Whether Confidential Nodes feature is enabled.
  3553. bool enabled = 1;
  3554. }
  3555. // UpgradeResourceType is the resource type that is upgrading. It is used
  3556. // in upgrade notifications.
  3557. enum UpgradeResourceType {
  3558. // Default value. This shouldn't be used.
  3559. UPGRADE_RESOURCE_TYPE_UNSPECIFIED = 0;
  3560. // Master / control plane
  3561. MASTER = 1;
  3562. // Node pool
  3563. NODE_POOL = 2;
  3564. }
  3565. // UpgradeEvent is a notification sent to customers by the cluster server when
  3566. // a resource is upgrading.
  3567. message UpgradeEvent {
  3568. // The resource type that is upgrading.
  3569. UpgradeResourceType resource_type = 1;
  3570. // The operation associated with this upgrade.
  3571. string operation = 2;
  3572. // The time when the operation was started.
  3573. google.protobuf.Timestamp operation_start_time = 3;
  3574. // The current version before the upgrade.
  3575. string current_version = 4;
  3576. // The target version for the upgrade.
  3577. string target_version = 5;
  3578. // Optional relative path to the resource. For example in node pool upgrades,
  3579. // the relative path of the node pool.
  3580. string resource = 6;
  3581. }
  3582. // UpgradeAvailableEvent is a notification sent to customers when a new
  3583. // available version is released.
  3584. message UpgradeAvailableEvent {
  3585. // The release version available for upgrade.
  3586. string version = 1;
  3587. // The resource type of the release version.
  3588. UpgradeResourceType resource_type = 2;
  3589. // The release channel of the version. If empty, it means a non-channel
  3590. // release.
  3591. ReleaseChannel release_channel = 3;
  3592. // Optional relative path to the resource. For example, the relative path of
  3593. // the node pool.
  3594. string resource = 4;
  3595. }
  3596. // SecurityBulletinEvent is a notification sent to customers when a security
  3597. // bulletin has been posted that they are vulnerable to.
  3598. message SecurityBulletinEvent {
  3599. // The resource type (node/control plane) that has the vulnerability. Multiple
  3600. // notifications (1 notification per resource type) will be sent for a
  3601. // vulnerability that affects > 1 resource type.
  3602. string resource_type_affected = 1;
  3603. // The ID of the bulletin corresponding to the vulnerability.
  3604. string bulletin_id = 2;
  3605. // The CVEs associated with this bulletin.
  3606. repeated string cve_ids = 3;
  3607. // The severity of this bulletin as it relates to GKE.
  3608. string severity = 4;
  3609. // The URI link to the bulletin on the website for more information.
  3610. string bulletin_uri = 5;
  3611. // A brief description of the bulletin. See the bulletin pointed to by the
  3612. // bulletin_uri field for an expanded description.
  3613. string brief_description = 6;
  3614. // The GKE minor versions affected by this vulnerability.
  3615. repeated string affected_supported_minors = 7;
  3616. // The GKE versions where this vulnerability is patched.
  3617. repeated string patched_versions = 8;
  3618. // This represents a version selected from the patched_versions field that
  3619. // the cluster receiving this notification should most likely want to upgrade
  3620. // to based on its current version. Note that if this notification is being
  3621. // received by a given cluster, it means that this version is currently
  3622. // available as an upgrade target in that cluster's location.
  3623. string suggested_upgrade_target = 9;
  3624. // If this field is specified, it means there are manual steps that the user
  3625. // must take to make their clusters safe.
  3626. bool manual_steps_required = 10;
  3627. }
  3628. // Autopilot is the configuration for Autopilot settings on the cluster.
  3629. message Autopilot {
  3630. // Enable Autopilot
  3631. bool enabled = 1;
  3632. }
  3633. // LoggingConfig is cluster logging configuration.
  3634. message LoggingConfig {
  3635. // Logging components configuration
  3636. LoggingComponentConfig component_config = 1;
  3637. }
  3638. // LoggingComponentConfig is cluster logging component configuration.
  3639. message LoggingComponentConfig {
  3640. // GKE components exposing logs
  3641. enum Component {
  3642. // Default value. This shouldn't be used.
  3643. COMPONENT_UNSPECIFIED = 0;
  3644. // system components
  3645. SYSTEM_COMPONENTS = 1;
  3646. // workloads
  3647. WORKLOADS = 2;
  3648. // kube-apiserver
  3649. APISERVER = 3;
  3650. // kube-scheduler
  3651. SCHEDULER = 4;
  3652. // kube-controller-manager
  3653. CONTROLLER_MANAGER = 5;
  3654. }
  3655. // Select components to collect logs. An empty set would disable all logging.
  3656. repeated Component enable_components = 1;
  3657. }
  3658. // MonitoringConfig is cluster monitoring configuration.
  3659. message MonitoringConfig {
  3660. // Monitoring components configuration
  3661. MonitoringComponentConfig component_config = 1;
  3662. // Enable Google Cloud Managed Service for Prometheus
  3663. // in the cluster.
  3664. ManagedPrometheusConfig managed_prometheus_config = 2;
  3665. }
  3666. // NodePoolLoggingConfig specifies logging configuration for nodepools.
  3667. message NodePoolLoggingConfig {
  3668. // Logging variant configuration.
  3669. LoggingVariantConfig variant_config = 1;
  3670. }
  3671. // LoggingVariantConfig specifies the behaviour of the logging component.
  3672. message LoggingVariantConfig {
  3673. // Logging component variants.
  3674. enum Variant {
  3675. // Default value. This shouldn't be used.
  3676. VARIANT_UNSPECIFIED = 0;
  3677. // default logging variant.
  3678. DEFAULT = 1;
  3679. // maximum logging throughput variant.
  3680. MAX_THROUGHPUT = 2;
  3681. }
  3682. // Logging variant deployed on nodes.
  3683. Variant variant = 1;
  3684. }
  3685. // MonitoringComponentConfig is cluster monitoring component configuration.
  3686. message MonitoringComponentConfig {
  3687. // GKE components exposing metrics
  3688. enum Component {
  3689. // Default value. This shouldn't be used.
  3690. COMPONENT_UNSPECIFIED = 0;
  3691. // system components
  3692. SYSTEM_COMPONENTS = 1;
  3693. // kube-apiserver
  3694. APISERVER = 3;
  3695. // kube-scheduler
  3696. SCHEDULER = 4;
  3697. // kube-controller-manager
  3698. CONTROLLER_MANAGER = 5;
  3699. }
  3700. // Select components to collect metrics. An empty set would disable all
  3701. // monitoring.
  3702. repeated Component enable_components = 1;
  3703. }
  3704. // The datapath provider selects the implementation of the Kubernetes networking
  3705. // model for service resolution and network policy enforcement.
  3706. enum DatapathProvider {
  3707. // Default value.
  3708. DATAPATH_PROVIDER_UNSPECIFIED = 0;
  3709. // Use the IPTables implementation based on kube-proxy.
  3710. LEGACY_DATAPATH = 1;
  3711. // Use the eBPF based GKE Dataplane V2 with additional features. See the [GKE
  3712. // Dataplane V2
  3713. // documentation](https://cloud.google.com/kubernetes-engine/docs/how-to/dataplane-v2)
  3714. // for more.
  3715. ADVANCED_DATAPATH = 2;
  3716. }
  3717. // Strategy used for node pool update.
  3718. enum NodePoolUpdateStrategy {
  3719. // Default value.
  3720. NODE_POOL_UPDATE_STRATEGY_UNSPECIFIED = 0;
  3721. // blue-green upgrade.
  3722. BLUE_GREEN = 2;
  3723. // SURGE is the traditional way of upgrade a node pool.
  3724. // max_surge and max_unavailable determines the level of upgrade parallelism.
  3725. SURGE = 3;
  3726. }
  3727. // ManagedPrometheusConfig defines the configuration for
  3728. // Google Cloud Managed Service for Prometheus.
  3729. message ManagedPrometheusConfig {
  3730. // Enable Managed Collection.
  3731. bool enabled = 1;
  3732. }
  3733. // Possible values for IP stack type
  3734. enum StackType {
  3735. // Default value, will be defaulted as IPV4 only
  3736. STACK_TYPE_UNSPECIFIED = 0;
  3737. // Cluster is IPV4 only
  3738. IPV4 = 1;
  3739. // Cluster can use both IPv4 and IPv6
  3740. IPV4_IPV6 = 2;
  3741. }
  3742. // Possible values for IPv6 access type
  3743. enum IPv6AccessType {
  3744. // Default value, will be defaulted as type external.
  3745. IPV6_ACCESS_TYPE_UNSPECIFIED = 0;
  3746. // Access type internal (all v6 addresses are internal IPs)
  3747. INTERNAL = 1;
  3748. // Access type external (all v6 addresses are external IPs)
  3749. EXTERNAL = 2;
  3750. }