A yw'n hawdd ac yn gyfleus paratoi clwstwr Kubernetes? Cyhoeddi addon-operator

A yw'n hawdd ac yn gyfleus paratoi clwstwr Kubernetes? Cyhoeddi addon-operator

Ar ôl cregyn-weithredwr rydym yn cyflwyno ei frawd hŷn - gweithredwr addon. Mae hwn yn brosiect Ffynhonnell Agored a ddefnyddir i osod cydrannau system mewn clwstwr Kubernetes, y gellir eu galw'n ychwanegion.

Pam unrhyw ychwanegiadau o gwbl?

Nid yw'n gyfrinach nad yw Kubernetes yn gynnyrch popeth-mewn-un parod, a bydd angen ychwanegiadau amrywiol i adeiladu clwstwr “oedolyn”. Bydd Addon-operator yn eich helpu i osod, ffurfweddu a chadw'r ychwanegion hyn yn gyfredol.

Datgelir yr angen am gydrannau ychwanegol yn y clwstwr yn adroddiad Cydweithwyr driusha. Yn fyr, mae'r sefyllfa gyda Kubernetes ar hyn o bryd yn golygu y gallwch chi lwyddo gyda'r cydrannau allan o'r bocs ar gyfer gosodiad “chwarae o gwmpas” syml, ar gyfer datblygwyr a phrofion gallwch chi ychwanegu Ingress, ond ar gyfer gosodiad llawn, am ba un gallwch ddweud “mae'ch cynhyrchiad yn barod”, mae angen i chi ychwanegu gyda dwsin o ychwanegion gwahanol: rhywbeth ar gyfer monitro, rhywbeth ar gyfer logio, peidiwch ag anghofio dod i mewn a rheolwr tystysgrif, dewis grwpiau o nodau, ychwanegu polisïau rhwydwaith, tymor gyda gosodiadau sysctl a pod autoscaler...

A yw'n hawdd ac yn gyfleus paratoi clwstwr Kubernetes? Cyhoeddi addon-operator

Beth yw manylion gweithio gyda nhw?

Fel y dengys arfer, nid yw'r mater yn gyfyngedig i un gosodiad. Er mwyn gweithio'n gyfforddus gyda'r clwstwr, bydd angen diweddaru ychwanegion, eu hanalluogi (eu tynnu o'r clwstwr), a byddwch am brofi rhai cyn eu gosod yn y clwstwr cynhyrchu.

Felly, efallai y bydd Ansible yn ddigon yma? Efallai. Ond Yn gyffredinol, nid yw ychwanegion llawn yn byw heb osodiadau. Gall y gosodiadau hyn fod yn wahanol yn dibynnu ar yr amrywiad clwstwr (aws, gce, azure, noeth-metel, do, ...). Ni ellir nodi rhai gosodiadau ymlaen llaw; rhaid eu cael o'r clwstwr. Ac nid yw'r clwstwr yn statig: ar gyfer rhai gosodiadau bydd yn rhaid i chi fonitro newidiadau. Ac yma mae Ansible eisoes ar goll: mae angen rhaglen arnoch sy’n byw mewn clwstwr, h.y. Gweithredwr Kubernetes.

Y rhai a roddodd gynnig arni yn y gwaith cregyn-weithredwr, byddant yn dweud y gellir datrys y tasgau o osod a diweddaru ychwanegion a gosodiadau monitro yn llwyr gan ddefnyddio bachau ar gyfer gweithredwr cragen. Gallwch chi ysgrifennu sgript a fydd yn gwneud amod kubectl apply a monitro, er enghraifft, ConfigMap, lle bydd y gosodiadau'n cael eu storio. Mae hyn yn fras yr hyn sy'n cael ei weithredu yn addo-operator.

Sut mae hyn wedi'i drefnu mewn gweithredwr ychwanegu?

Wrth greu datrysiad newydd, fe wnaethom symud ymlaen o'r egwyddorion canlynol:

  • Rhaid i osodwr yr ychwanegyn gefnogi cyfluniad templedol a datganiadol. Nid ydym yn gwneud sgriptiau hud sy'n gosod ychwanegion. Mae Addon-operator yn defnyddio Helm i osod ategion. I osod, mae angen i chi greu siart a dewis y gwerthoedd a ddefnyddir ar gyfer cyfluniad.
  • Gall gosodiadau fod cynhyrchu wrth osod, gallant fod cael o clwstwrNeu derbyn diweddariadau, monitro adnoddau clwstwr. Gellir gweithredu'r gweithrediadau hyn gan ddefnyddio bachau.
  • Gall gosodiadau fod storio mewn clwstwr. I storio gosodiadau yn y clwstwr, mae ConfigMap/gweithredwr addon yn cael ei greu ac mae'r gweithredwr Addon yn monitro newidiadau i'r ConfigMap hwn. Mae Addon-operator yn rhoi mynediad i fachau i leoliadau gan ddefnyddio confensiynau syml.
  • Mae ychwanegu yn dibynnu ar osodiadau. Os yw'r gosodiadau wedi newid, yna bydd y gweithredwr Addon yn cyflwyno'r siart Helm gyda gwerthoedd newydd. Fe wnaethom alw'r cyfuniad o'r siart Helm, gwerthoedd ar ei gyfer a bachau modiwl (gweler isod am ragor o fanylion).
  • Llwyfannu. Nid oes unrhyw sgriptiau rhyddhau hud. Mae'r mecanwaith diweddaru yn debyg i gymhwysiad rheolaidd - casglwch ychwanegion a gweithredwyr ychwanegion i mewn i ddelwedd, tagiwch nhw a'u cyflwyno.
  • Rheoli canlyniadau. Gall gweithredwr addo ddarparu metrigau ar gyfer Prometheus.

Beth yw padin yn y gweithredwr addon?

Gellir ystyried ychwanegiad yn unrhyw beth sy'n ychwanegu swyddogaethau newydd i'r clwstwr. Er enghraifft, mae gosod Ingress yn enghraifft wych o ychwanegiad. Gall hwn fod yn unrhyw weithredwr neu reolwr sydd â'i CRD ei hun: gweithredwr prometheus, rheolwr tystysgrif, rheolwr-rheolwr-ciwbe, ac ati. Neu rywbeth bach, ond haws i'w ddefnyddio - er enghraifft, copïwr cyfrinachol, sy'n copïo cyfrinachau cofrestrfa i ofodau enw newydd, neu diwniwr sysctl, sy'n ffurfweddu paramedrau sysctl ar nodau newydd.

I weithredu ychwanegion, mae Addon-operator yn darparu sawl cysyniad:

  • Siart llyw a ddefnyddir i osod meddalwedd amrywiol yn y clwstwr - er enghraifft, Prometheus, Grafana, nginx-ingress. Os oes gan y gydran ofynnol siart Helm, yna bydd ei osod gan ddefnyddio Addon-operator yn syml iawn.
  • Storio gwerthoedd. Fel arfer mae gan siartiau Helm lawer o wahanol leoliadau a all newid dros amser. Mae Addon-operator yn cefnogi storio'r gosodiadau hyn a gall fonitro eu newidiadau er mwyn ailosod y siart Helm gyda gwerthoedd newydd.
  • Bachau yn ffeiliau gweithredadwy y mae'r Addon-operator yn eu rhedeg ar ddigwyddiadau ac sy'n cyrchu'r storfa gwerthoedd. Gall y bachyn fonitro newidiadau yn y clwstwr a diweddaru'r gwerthoedd yn y storfa gwerthoedd. Y rhai. Gan ddefnyddio bachau, gallwch wneud darganfyddiad i gasglu gwerthoedd o'r clwstwr wrth gychwyn neu yn ôl amserlen, neu gallwch wneud darganfyddiad parhaus, gan gasglu gwerthoedd o'r clwstwr yn seiliedig ar newidiadau yn y clwstwr.
  • Modiwl yn gyfuniad o siart Helm, storfa gwerthoedd a bachau. Gellir galluogi neu analluogi modiwlau. Mae analluogi modiwl yn golygu dileu holl ddatganiadau siart Helm. Gall modiwlau alluogi eu hunain yn ddeinamig, er enghraifft, os yw'r holl fodiwlau sydd eu hangen arno wedi'u galluogi neu os yw darganfyddiad wedi dod o hyd i'r paramedrau angenrheidiol yn y bachau - gwneir hyn gan ddefnyddio sgript galluogi ategol.
  • Bachau byd-eang. Bachau yw’r rhain “ar eu pen eu hunain”, nid ydynt wedi’u cynnwys mewn modiwlau ac mae ganddynt fynediad at storfa werthoedd byd-eang, y mae eu gwerthoedd ar gael i bob bachyn mewn modiwlau.

Sut mae'r rhannau hyn yn gweithio gyda'i gilydd? Edrychwn ar y llun o'r ddogfennaeth:

A yw'n hawdd ac yn gyfleus paratoi clwstwr Kubernetes? Cyhoeddi addon-operator

Mae dwy senario gwaith:

  1. Mae’r bachyn byd-eang yn cael ei sbarduno gan ddigwyddiad – er enghraifft, pan fydd adnodd yn y clwstwr yn newid. Mae'r bachyn hwn yn prosesu'r newidiadau ac yn ysgrifennu'r gwerthoedd newydd i'r storfa gwerthoedd byd-eang. Mae gweithredwr addon yn sylwi bod y storfa fyd-eang wedi newid ac yn cychwyn pob modiwl. Mae pob modiwl, gan ddefnyddio ei bachau, yn pennu a oes angen ei alluogi ac yn diweddaru ei storfa werthoedd. Os yw'r modiwl wedi'i alluogi, mae'r gweithredwr Addon yn dechrau gosod y siart Helm. Yn yr achos hwn, mae gan y siart Helm fynediad at werthoedd o'r storfa modiwl ac o'r storfa fyd-eang.
  2. Mae'r ail senario yn symlach: mae bachyn modiwl yn cael ei sbarduno gan ddigwyddiad ac yn newid gwerthoedd yn storfa werthoedd y modiwl. Mae Addon-operator yn sylwi ar hyn ac yn lansio'r siart Helm gyda gwerthoedd wedi'u diweddaru.

Gellir gweithredu'r ychwanegiad fel un bachyn sengl, neu fel un siart Helm, neu hyd yn oed fel sawl modiwl dibynnol - mae hyn yn dibynnu ar gymhlethdod y gydran sy'n cael ei gosod yn y clwstwr ac ar y lefel a ddymunir o hyblygrwydd cyfluniad. Er enghraifft, yn y gadwrfa (/enghreifftiau) mae yna ychwanegyn sysctl-tiwniwr, sy'n cael ei weithredu fel modiwl syml gyda bachyn a siart Helm, a defnyddio'r storfa gwerthoedd, sy'n ei gwneud hi'n bosibl ychwanegu gosodiadau trwy olygu ConfigMap.

Cyflwyno diweddariadau

Ychydig eiriau am drefnu diweddariadau cydran y mae Addon-operator yn eu gosod.

I redeg Addon-operator mewn clwstwr, mae angen adeiladu delwedd gydag ychwanegiadau ar ffurf ffeiliau siart bachyn a Helm, ychwanegwch ffeil ddeuaidd addon-operator a phopeth sydd ei angen arnoch ar gyfer bachau: bash, kubectl, jq, python etc. Yna gellir cyflwyno'r ddelwedd hon i'r clwstwr fel cymhwysiad rheolaidd, ac yn fwyaf tebygol y byddwch am drefnu un neu gynllun tagio arall. Os nad oes llawer o glystyrau, efallai y bydd yr un dull â cheisiadau yn addas: rhyddhau newydd, fersiwn newydd, ewch i bob clwstwr a chywiro delwedd y Pods. Fodd bynnag, yn achos cyflwyno i nifer sylweddol o glystyrau, roedd y cysyniad o hunan-ddiweddaru o sianel yn fwy addas i ni.

Dyma sut rydyn ni'n ei wneud:

  • Yn ei hanfod, dynodwr yw sianel y gellir ei osod i unrhyw beth (er enghraifft, dev/stage/ea/stable).
  • Enw'r sianel yw'r tag delwedd. Pan fydd angen i chi gyflwyno diweddariadau i sianel, mae delwedd newydd yn cael ei chydosod a'i thagio gydag enw'r sianel.
  • Pan fydd delwedd newydd yn ymddangos yn y gofrestrfa, mae Addon-operator yn cael ei ailgychwyn a'i lansio gyda'r ddelwedd newydd.

Nid yw hyn yn arfer gorau, fel yr ysgrifennwyd yn Dogfennaeth Kubernetes. Ni argymhellir gwneud hyn, ond rydym yn sôn amdano cais rheolaidd sy'n byw yn yr un clwstwr. Yn achos Addon-operator, mae cais yn llawer o Defnyddiau wedi'u gwasgaru ar draws clystyrau, ac mae hunan-ddiweddariad yn helpu llawer ac yn gwneud bywyd yn haws.

Mae sianeli yn helpu a mewn profi: os oes clwstwr ategol, gallwch ei ffurfweddu i'r sianel stage a rholio diweddariadau iddo cyn ei gyflwyno i sianeli ea и stable. Os gyda chlwstwr ar y sianel ea digwyddodd gwall, gallwch ei newid i stable, tra bod y broblem gyda'r clwstwr hwn yn cael ei hymchwilio. Os caiff y clwstwr ei dynnu allan o gefnogaeth weithredol, mae'n newid i'w sianel "rhewi" - er enghraifft, freeze-2019-03-20.

Yn ogystal â diweddaru siartiau bachau a Helm, efallai y bydd angen diweddariad a chydran trydydd parti. Er enghraifft, fe wnaethoch chi sylwi ar nam yn yr allforiwr nod amodol a hyd yn oed ddarganfod sut i'w glytio. Nesaf, fe wnaethoch chi agor y PR ac yn aros am y datganiad newydd i fynd trwy'r holl glystyrau a chynyddu fersiwn y ddelwedd. Er mwyn peidio ag aros am gyfnod amhenodol, gallwch adeiladu eich nod-allforiwr a newid iddo cyn derbyn y cysylltiadau cyhoeddus.

Yn gyffredinol, gellir gwneud hyn heb Addon-operator, ond gyda Addon-operator bydd y modiwl ar gyfer gosod nod-allforiwr i'w weld mewn un ystorfa, gellir cadw'r Dockerfile ar gyfer adeiladu'ch delwedd yno, daw'n haws i bawb sy'n cymryd rhan ynddo y broses i ddeall beth sy'n digwydd... Ac os oes sawl clwstwr, yna mae'n dod yn haws profi eich cysylltiadau cyhoeddus a chyflwyno fersiwn newydd!

Mae'r trefniant hwn o ddiweddaru cydrannau yn gweithio'n llwyddiannus i ni, ond gellir gweithredu unrhyw gynllun addas arall - wedi'r cyfan yn yr achos hwn mae Addon-operator yn ffeil ddeuaidd syml.

Casgliad

Mae'r egwyddorion a weithredir yn Addon-operator yn caniatáu ichi adeiladu proses dryloyw ar gyfer creu, profi, gosod a diweddaru ychwanegion mewn clwstwr, yn debyg i brosesau datblygu cymwysiadau rheolaidd.

Gall ychwanegion ar gyfer Addon-operator ar ffurf modiwl (siart Helm + bachau) fod ar gael yn gyhoeddus. Yr ydym ni, cwmni y Fflint, yn bwriadu cyhoeddi ein datblygiadau ar ffurf ychwanegiadau o'r fath yn ystod yr haf. Ymunwch â datblygiad ar GitHub (cregyn-weithredwr, gweithredwr addon), ceisiwch wneud eich ychwanegiad eich hun yn seiliedig ar enghreifftiau и dogfennaeth, aros am newyddion ar Habré ac ar ein Sianel YouTube!

PS

Darllenwch hefyd ar ein blog:

Ffynhonnell: hab.com

Ychwanegu sylw