Je, ni rahisi na rahisi kuandaa nguzo ya Kubernetes? Inatangaza kiendeshaji cha kuongeza

Je, ni rahisi na rahisi kuandaa nguzo ya Kubernetes? Inatangaza kiendeshaji cha kuongeza

Kufuatia shell-operator tunawasilisha kaka yake mkubwa - kiendeshaji cha kuongeza. Huu ni mradi wa Open Source ambao hutumika kusakinisha vipengee vya mfumo kwenye kundi la Kubernetes, ambalo linaweza kuitwa nyongeza.

Kwa nini nyongeza yoyote?

Sio siri kuwa Kubernetes sio bidhaa iliyotengenezwa tayari kwa moja, na ili kuunda kikundi cha "watu wazima" utahitaji nyongeza kadhaa. Kiendeshaji cha nyongeza kitakusaidia kusakinisha, kusanidi na kusasisha programu jalizi hizi.

Haja ya vipengee vya ziada kwenye nguzo imefichuliwa ripoti wenzake drusha. Kwa kifupi, hali ya Kubernetes kwa sasa ni kwamba kwa usakinishaji rahisi wa "kucheza karibu" unaweza kupata na vifaa nje ya boksi, kwa watengenezaji na majaribio unaweza kuongeza Ingress, lakini kwa usakinishaji kamili, ambao unaweza kusema "uzalishaji wako uko tayari", unahitaji kuongeza na nyongeza kadhaa tofauti: kitu cha ufuatiliaji, kitu cha ukataji miti, usisahau ingress na meneja wa cert, chagua vikundi vya nodi, ongeza sera za mtandao, msimu. na mipangilio ya sysctl na pod autoscaler...

Je, ni rahisi na rahisi kuandaa nguzo ya Kubernetes? Inatangaza kiendeshaji cha kuongeza

Ni nini maalum za kufanya kazi nao?

Kama inavyoonyesha mazoezi, jambo hilo halizuiliwi kwa usakinishaji mmoja. Ili kufanya kazi kwa raha na nguzo, programu jalizi itahitaji kusasishwa, kuzimwa (kuondolewa kwenye kundi), na utataka kujaribu baadhi kabla ya kuzisakinisha katika kundi la uzalishaji.

Kwa hivyo, labda Ansible itatosha hapa? Labda. Lakini Kwa ujumla, nyongeza kamili haziishi bila mipangilio. Mipangilio hii inaweza kutofautiana kulingana na lahaja ya nguzo (aws, gce, azure, bare-metal, do, ...). Mipangilio mingine haiwezi kubainishwa mapema; lazima ipatikane kutoka kwa nguzo. Na nguzo sio tuli: kwa mipangilio mingine itabidi ufuatilie mabadiliko. Na hapa Ansible tayari haipo: unahitaji programu inayoishi katika kikundi, i.e. Opereta wa Kubernetes.

Wale ambao walijaribu kazini shell-operator, watasema kuwa kazi za kufunga na kusasisha nyongeza na mipangilio ya ufuatiliaji zinaweza kutatuliwa kabisa kwa kutumia kulabu kwa mwendesha ganda. Unaweza kuandika hati ambayo itafanya masharti kubectl apply na kufuatilia, kwa mfano, ConfigMap, ambapo mipangilio itahifadhiwa. Hii ni takriban kile kinachotekelezwa katika kiendeshaji cha nyongeza.

Je, hii imepangwa vipi katika kiendeshaji cha nyongeza?

Wakati wa kuunda suluhisho mpya, tuliendelea kutoka kwa kanuni zifuatazo:

  • Kisakinishi cha programu jalizi lazima kikubali kiolezo na usanidi wa kutangaza. Hatutengenezi hati za uchawi zinazosakinisha programu jalizi. Addon-operator hutumia Helm kusakinisha viongezi. Ili kusakinisha, unahitaji kuunda chati na kuchagua maadili ambayo yatatumika kwa usanidi.
  • Mipangilio inaweza kuwa kuzalisha kwenye ufungaji, wanaweza kuwa pata kutoka kwa nguzoAu kupokea sasisho, ufuatiliaji wa rasilimali za nguzo. Shughuli hizi zinaweza kutekelezwa kwa kutumia ndoano.
  • Mipangilio inaweza kuwa kuhifadhi katika nguzo. Ili kuhifadhi mipangilio katika kundi, kiendeshaji cha ConfigMap/addon kinaundwa na kifuatiliaji cha Addon-operator kinabadilika kwa ConfigMap hii. Addon-operator hupa ndoano ufikiaji wa mipangilio kwa kutumia mikusanyiko rahisi.
  • Nyongeza inategemea mipangilio. Ikiwa mipangilio imebadilika, basi Opereta ya Addon hutoa chati ya Helm na maadili mapya. Tuliita mchanganyiko wa chati ya Helm, maadili yake na ndoano za moduli (tazama hapa chini kwa maelezo zaidi).
  • Staging. Hakuna hati za kutolewa kwa uchawi. Utaratibu wa kusasisha ni sawa na programu ya kawaida - kukusanya nyongeza na viendeshaji viongezi kwenye picha, ziweke tagi na zitoe.
  • Udhibiti wa matokeo. Kiendeshaji cha Addon kinaweza kutoa vipimo vya Prometheus.

Padding katika addon-operator ni nini?

Nyongeza inaweza kuzingatiwa chochote kinachoongeza kazi mpya kwenye nguzo. Kwa mfano, kusakinisha Ingress ni mfano mzuri wa nyongeza. Huyu anaweza kuwa mwendeshaji au kidhibiti chochote chenye CRD yake mwenyewe: prometheus-operator, cert-manager, kube-controller-manager, n.k. Au kitu kidogo, lakini rahisi kutumia - kwa mfano, mwiga siri, ambayo nakala siri za Usajili kwa nafasi mpya ya majina, au sysctl tuner, ambayo configure vigezo sysctl kwenye nodi mpya.

Ili kutekeleza nyongeza, Opereta ya Addon hutoa dhana kadhaa:

  • Chati ya usukani kutumika kufunga programu mbalimbali kwenye nguzo - kwa mfano, Prometheus, Grafana, nginx-ingress. Ikiwa sehemu inayohitajika ina chati ya Helm, basi kuiweka kwa kutumia Addon-operator itakuwa rahisi sana.
  • Hifadhi ya maadili. Chati za usukani huwa na mipangilio mingi tofauti inayoweza kubadilika kwa wakati. Kiendeshaji cha Addon kinaweza kuhifadhi mipangilio hii na kinaweza kufuatilia mabadiliko yao ili kusakinisha tena chati ya Helm yenye thamani mpya.
  • Kulabu ni faili zinazoweza kutekelezwa ambazo kiendeshaji cha Addon huendesha kwenye matukio na zinazofikia hifadhi ya maadili. Ndoano inaweza kufuatilia mabadiliko katika nguzo na kusasisha maadili katika duka la maadili. Wale. Kwa kutumia ndoano, unaweza kufanya ugunduzi kukusanya thamani kutoka kwa nguzo wakati wa kuanza au kulingana na ratiba, au unaweza kufanya ugunduzi unaoendelea, kukusanya maadili kutoka kwa nguzo kulingana na mabadiliko katika nguzo.
  • Moduli ni mchanganyiko wa chati ya Helm, duka la maadili na ndoano. Moduli zinaweza kuwezeshwa au kuzimwa. Kuzima sehemu kunamaanisha kufuta matoleo yote ya chati ya Helm. Modules zinaweza kujiwezesha kwa nguvu, kwa mfano, ikiwa moduli zote zinazohitajika zimewezeshwa au ikiwa ugunduzi umepata vigezo muhimu kwenye ndoano - hii inafanywa kwa kutumia script iliyowezeshwa msaidizi.
  • Kulabu za kimataifa. Hizi ni ndoano "zenyewe", hazijajumuishwa kwenye moduli na zinaweza kufikia duka la maadili la kimataifa, maadili ambayo yanapatikana kwa ndoano zote kwenye moduli.

Je, sehemu hizi hufanya kazi pamoja vipi? Wacha tuangalie picha kutoka kwa nyaraka:

Je, ni rahisi na rahisi kuandaa nguzo ya Kubernetes? Inatangaza kiendeshaji cha kuongeza

Kuna matukio mawili ya kazi:

  1. Ndoano ya kimataifa inasababishwa na tukio - kwa mfano, wakati rasilimali katika nguzo inabadilika. Ndoano hii huchakata mabadiliko na huandika maadili mapya kwenye duka la maadili ya kimataifa. Kiendeshaji cha nyongeza kinatambua kuwa hifadhi ya kimataifa imebadilika na kuanzisha moduli zote. Kila moduli, kwa kutumia ndoano zake, huamua ikiwa inahitaji kuwezeshwa na kusasisha hifadhi yake ya maadili. Ikiwa moduli imewezeshwa, kiendeshaji cha Addon kitaanza usakinishaji wa chati ya Helm. Katika hali hii, chati ya Helm inaweza kufikia maadili kutoka kwa hifadhi ya moduli na kutoka kwa hifadhi ya kimataifa.
  2. Hali ya pili ni rahisi zaidi: ndoano ya moduli inasababishwa na tukio na inabadilisha maadili katika duka la maadili ya moduli. Addon-operator hutambua hili na kuzindua chati ya Helm yenye thamani zilizosasishwa.

Nyongeza inaweza kutekelezwa kama ndoano moja, au kama chati ya Helm, au hata kama moduli kadhaa tegemezi - hii inategemea ugumu wa sehemu inayowekwa kwenye nguzo na kwa kiwango kinachohitajika cha kubadilika kwa usanidi. Kwa mfano, kwenye hifadhi (/mifano) kuna nyongeza ya sysctl-tuner, ambayo inatekelezwa kama moduli rahisi na ndoano na chati ya Helm, na kutumia duka la maadili, ambayo inafanya uwezekano wa kuongeza mipangilio kwa kuhariri ConfigMap.

Uwasilishaji wa sasisho

Maneno machache kuhusu kupanga masasisho ya vipengele ambayo Addon-operator husakinisha.

Ili kuendesha Addon-operator katika nguzo, unahitaji jenga picha na nyongeza kwa namna ya ndoano na faili za chati ya Helm, ongeza faili ya binary addon-operator na kila kitu unachohitaji kwa ndoano: bash, kubectl, jq, python na kadhalika. Kisha picha hii inaweza kusambazwa kwa nguzo kama programu ya kawaida, na uwezekano mkubwa utataka kupanga mpango mmoja au mwingine wa kuweka lebo. Ikiwa kuna makundi machache, mbinu sawa na ya maombi inaweza kufaa: toleo jipya, toleo jipya, pitia makundi yote na urekebishe picha ya Pods. Hata hivyo, katika kesi ya kusambaza idadi kubwa ya makundi, dhana ya kujisasisha kutoka kwa kituo ilitufaa zaidi.

Hivi ndivyo tunavyofanya:

  • Chaneli kimsingi ni kitambulisho ambacho kinaweza kuwekwa kwa chochote (kwa mfano, dev/stage/ea/stable).
  • Jina la kituo ni lebo ya picha. Unapohitaji kusambaza masasisho kwenye kituo, picha mpya hukusanywa na kutambulishwa kwa jina la kituo.
  • Wakati picha mpya inaonekana kwenye Usajili, Opereta ya Addon inaanzishwa upya na kuzinduliwa na picha mpya.

Hii sio mazoezi bora, kama ilivyoandikwa ndani Nyaraka za Kubernetes. Haipendekezi kufanya hivyo, lakini tunazungumzia programu ya kawaida inayoishi katika nguzo moja. Kwa upande wa Addon-operator, programu tumizi ni Usambazaji mwingi uliotawanyika katika vishada, na kujisasisha husaidia sana na kurahisisha maisha.

Njia husaidia na katika majaribio: ikiwa kuna nguzo msaidizi, unaweza kuisanidi kwa kituo stage na uingize masasisho ndani yake kabla ya kuisambaza kwa vituo ea ΠΈ stable. Ikiwa na nguzo kwenye chaneli ea hitilafu imetokea, unaweza kuibadilisha hadi stable, wakati tatizo la nguzo hii linachunguzwa. Ikiwa nguzo imetolewa nje ya usaidizi unaotumika, inabadilika hadi kituo chake "kilichohifadhiwa" - kwa mfano, freeze-2019-03-20.

Mbali na kusasisha ndoano na chati za Helm, unaweza kuhitaji sasisha na sehemu ya mtu wa tatu. Kwa mfano, uligundua mdudu katika nodi-nje ya masharti na hata ukafikiria jinsi ya kuibandika. Kisha, ulifungua PR na unasubiri toleo jipya kupitia makundi yote na kuongeza toleo la picha. Ili usisubiri kwa muda usiojulikana, unaweza kujenga nodi-exporter yako na kubadili kwake kabla ya kukubali PR.

Kwa ujumla, hii inaweza kufanywa bila Addon-operator, lakini kwa Addon-operator moduli ya kusakinisha node-exporter itaonekana kwenye hazina moja, Dockerfile ya kujenga picha yako inaweza kuwekwa pale pale, inakuwa rahisi kwa washiriki wote katika mchakato wa kuelewa nini kinatokea ... Na ikiwa kuna makundi kadhaa, basi inakuwa rahisi kupima PR yako na kutoa toleo jipya!

Shirika hili la uppdatering wa sehemu hufanya kazi kwa mafanikio kwetu, lakini mpango mwingine wowote unaofaa unaweza kutekelezwa - baada ya yote katika kesi hii Addon-operator ni faili rahisi ya binary.

Hitimisho

Kanuni zilizotekelezwa katika Addon-operator hukuruhusu kuunda mchakato wazi wa kuunda, kujaribu, kusakinisha na kusasisha programu-jalizi kwenye kundi, sawa na michakato ya ukuzaji ya programu za kawaida.

Viongezi vya kiendeshaji cha Addon katika umbizo la moduli (Chati ya Helm + kulabu) vinaweza kupatikana kwa umma. Sisi, kampuni ya Flant, tunapanga kuchapisha maendeleo yetu kwa namna ya nyongeza hizo wakati wa majira ya joto. Jiunge na maendeleo kwenye GitHub (shell-operator, kiendeshaji cha kuongeza), jaribu kufanya nyongeza yako mwenyewe kulingana na mifano ΠΈ nyaraka, subiri habari kuhusu Habre na kwenye yetu Kituo cha YouTube!

PS

Soma pia kwenye blogi yetu:

Chanzo: mapenzi.com

Kuongeza maoni