Unapoanza kuunda huduma zaidi na zaidi za Kubernetes, kazi ambazo mwanzoni ni rahisi huanza kuwa ngumu zaidi. Kwa mfano, timu za maendeleo haziwezi kuunda huduma au usambazaji chini ya jina moja. Ikiwa una maelfu ya maganda, kuorodhesha tu kutachukua muda mwingi, achilia mbali kuyasimamia ipasavyo. Na hii ni ncha tu ya barafu.
Hebu tuangalie jinsi nafasi ya majina inavyorahisisha kudhibiti rasilimali za Kubernetes. Kwa hivyo nafasi ya majina ni nini? Nafasi ya majina inaweza kuzingatiwa kama nguzo pepe ndani ya nguzo yako ya Kubernetes. Unaweza kuwa na nafasi nyingi za majina zilizotengwa kutoka kwa kila mmoja ndani ya nguzo moja ya Kubernetes. Wanaweza kukusaidia wewe na timu zako na shirika, usalama na hata utendakazi wa mfumo.
Kwenye usambazaji mwingi wa Kubernetes, nguzo hutoka kwenye kisanduku na nafasi ya jina inayoitwa "chaguo-msingi". Kwa kweli kuna nafasi tatu za majina ambazo Kubernetes inashughulikia: chaguo-msingi, mfumo wa kube, na kube-public. Hivi sasa, Kube-public haitumiwi mara kwa mara.
Kuacha nafasi ya majina ya kube peke yake ni wazo nzuri, haswa kwenye mfumo unaodhibitiwa kama Injini ya Google Kubernetes. Inatumia nafasi ya majina "chaguo-msingi" kama mahali ambapo huduma na programu zako zinaundwa. Hakuna kitu maalum kuihusu, isipokuwa kwamba Kubernetes imesanidiwa nje ya kisanduku kuitumia, na huwezi kuiondoa. Hii ni nzuri kwa kuanza na mifumo ya chini ya utendaji, lakini singependekeza kutumia nafasi ya majina kwenye mifumo mikubwa ya uzalishaji. Katika hali ya mwisho, timu moja ya ukuzaji inaweza kuandika upya msimbo wa mtu mwingine kwa urahisi na kuvunja kazi ya timu nyingine bila hata kutambua.
Kwa hivyo, unapaswa kuunda nafasi nyingi za majina na uzitumie kugawa huduma zako katika vitengo vinavyoweza kudhibitiwa. Nafasi ya majina inaweza kuundwa kwa amri moja. Ikiwa unataka kuunda jaribio la nafasi ya majina, basi tumia amri $ kubectl unda jaribio la nafasi ya majina au uunde faili ya YAML na uitumie kama rasilimali nyingine yoyote ya Kubernetes.
Unaweza kutazama nafasi zote za majina kwa kutumia $ kubectl get namespace amri.
Ikikamilika, utaona nafasi tatu za majina zilizojengwa ndani na nafasi mpya ya majina inayoitwa "mtihani". Hebu tuangalie faili rahisi ya YAML ili kuunda ganda. Utagundua kuwa hakuna kutajwa kwa nafasi ya majina.
Ukitumia kubectl kuendesha faili hii, itaunda moduli ya mypod katika nafasi ya majina inayotumika kwa sasa. Hili litakuwa nafasi ya majina chaguomsingi hadi uibadilishe. Kuna njia 2 za kumwambia Kubernetes ni nafasi gani ya majina unataka kuunda rasilimali yako. Njia ya kwanza ni kutumia bendera ya nafasi ya majina wakati wa kuunda rasilimali.
Njia ya pili ni kubainisha nafasi ya majina katika tamko la YAML.
Ukibainisha nafasi ya majina katika YAML, rasilimali itaundwa kila mara katika nafasi hiyo ya majina. Ukijaribu kutumia nafasi tofauti ya majina huku ukitumia bendera ya nafasi ya majina, amri itashindwa. Sasa ukijaribu kutafuta ganda lako, hutaweza kufanya hivyo.
Hii hutokea kwa sababu amri zote zinatekelezwa nje ya nafasi ya majina inayotumika sasa. Ili kupata ganda lako, unahitaji kutumia bendera ya nafasi ya majina, lakini hii huchosha haraka, haswa ikiwa wewe ni msanidi programu kwenye timu inayotumia nafasi yake ya majina na haitaki kutumia bendera hiyo kwa kila amri moja. Hebu tuone jinsi tunaweza kurekebisha hili.
Nje ya kisanduku, nafasi yako ya majina inayotumika inaitwa chaguo-msingi. Ikiwa hutabainisha nafasi ya majina katika rasilimali ya YAML, basi amri zote za Kubernetes zitatumia nafasi hii chaguomsingi inayotumika. Kwa bahati mbaya, kujaribu kudhibiti nafasi ya majina inayotumika kwa kutumia kubectl kunaweza kushindwa. Hata hivyo, kuna chombo kizuri sana kinachoitwa Kubens ambacho hurahisisha mchakato huu. Unapoendesha amri ya kubens, unaona nafasi zote za majina zilizo na nafasi ya jina inayotumika imeangaziwa.
Ili kubadilisha nafasi ya jina inayotumika kuwa nafasi ya jina ya jaribio, unaendesha tu amri ya jaribio la $kubens. Ikiwa utaendesha amri ya $kubens tena, utaona kuwa nafasi mpya ya jina sasa imetengwa - test.
Hii inamaanisha kuwa hauitaji bendera ya nafasi ya majina ili kuona ganda kwenye nafasi ya majina ya majaribio.
Kwa njia hii nafasi za majina zimefichwa kutoka kwa kila mmoja, lakini hazijatengwa kutoka kwa kila mmoja. Huduma katika nafasi moja ya majina inaweza kuwasiliana kwa urahisi kabisa na huduma katika nafasi nyingine ya majina, ambayo mara nyingi ni muhimu sana. Uwezo wa kuwasiliana katika nafasi tofauti za majina unamaanisha kuwa huduma ya wasanidi programu wako inaweza kuwasiliana na huduma ya timu nyingine ya wasanidi programu katika nafasi tofauti ya majina.
Kwa kawaida, programu yako inapotaka kufikia huduma ya Kubernetes, unatumia huduma ya ugunduzi iliyojengewa ndani ya DNS na kuipa programu yako jina la huduma. Hata hivyo, kwa kufanya hivyo, unaweza kuunda huduma chini ya jina moja katika nafasi nyingi za majina, ambayo haikubaliki.
Kwa bahati nzuri, hii ni rahisi kuzunguka kwa kutumia fomu iliyopanuliwa ya anwani ya DNS. Huduma katika Kubernetes hufichua ncha zao kwa kutumia kiolezo cha kawaida cha DNS. Inaonekana kitu kama hiki:
Kwa kawaida, unahitaji tu jina la huduma na DNS itaamua moja kwa moja anwani kamili.
Walakini, ikiwa unahitaji kupata huduma katika nafasi tofauti ya majina, tumia tu jina la huduma pamoja na jina la nafasi ya majina:
Kwa mfano, ikiwa unataka kuunganisha kwenye hifadhidata ya huduma katika nafasi ya jina ya jaribio, unaweza kutumia hifadhidata ya anwani database.test.
Ikiwa unataka kuunganisha kwenye hifadhidata ya huduma katika nafasi ya majina ya prod, unatumia database.prod.
Ikiwa kweli unataka kutenga na kuzuia ufikiaji wa nafasi ya majina, Kubernetes hukuruhusu kufanya hivi kwa kutumia Sera za Mtandao za Kubernetes. Nitalizungumza hili katika sehemu inayofuata.
Mara nyingi mimi huulizwa swali, ni nafasi ngapi za majina ninapaswa kuunda na kwa madhumuni gani? Kipande cha data kinachodhibitiwa ni nini?
Ukiunda nafasi nyingi za majina, zitakuzuia tu. Ikiwa kuna wachache wao, utapoteza faida zote za suluhisho hilo. Nadhani kuna hatua kuu nne ambazo kila kampuni hupitia wakati wa kuunda muundo wake wa shirika. Kulingana na hatua ya maendeleo ambayo mradi au kampuni yako iko, unaweza kutaka kupitisha mkakati unaofaa wa nafasi ya majina.
Fikiria kuwa wewe ni sehemu ya timu ndogo ambayo inafanya kazi katika kutengeneza huduma ndogo 5-10 na unaweza kukusanya watengenezaji wote kwa urahisi katika chumba kimoja. Katika hali hii, inaeleweka kuendesha huduma zote za prod katika nafasi ya jina chaguo-msingi. Kwa kweli, kwa kubadilika zaidi, unaweza kutumia nafasi 2 za majina - kando kwa prod na dev. Na uwezekano mkubwa, unajaribu ukuzaji wako kwenye kompyuta yako ya karibu kwa kutumia kitu kama Minikube.
Hebu tuseme mambo yanabadilika na sasa una timu inayokua kwa kasi inayofanya kazi kwenye zaidi ya huduma ndogo 10 kwa wakati mmoja. Inakuja wakati ambapo ni muhimu kutumia makundi kadhaa au nafasi za majina, tofauti kwa prod na dev. Unaweza kuvunja timu katika timu ndogo ndogo ili kila moja iwe na huduma zake ndogo na kila moja ya timu hizi inaweza kuchagua nafasi yake ya majina ili kuwezesha mchakato wa kudhibiti uundaji na uchapishaji wa programu.
Kila mshiriki wa timu anapopata maarifa kuhusu jinsi mfumo kwa ujumla unavyofanya kazi, inakuwa vigumu zaidi na zaidi kuratibu kila mabadiliko na wasanidi wengine wote. Kujaribu kusokota rundo kamili kwenye mashine yako ya karibu inazidi kuwa ngumu kila siku.
Katika makampuni makubwa, watengenezaji kwa ujumla hawajui ni nani hasa anafanya kazi juu ya nini. Timu huwasiliana kwa kutumia kandarasi za huduma au kutumia teknolojia ya wavu wa huduma, ambayo huongeza safu ya uondoaji kwenye mtandao, kama vile zana ya usanidi ya Istio. Kujaribu kuendesha mrundikano mzima ndani ya nchi haiwezekani. Ninapendekeza sana kutumia jukwaa la uwasilishaji endelevu (CD) kama Spinnaker kwenye Kubernetes. Kwa hivyo, inakuja wakati ambapo kila amri hakika inahitaji nafasi yake ya jina. Kila timu inaweza hata kuchagua nafasi nyingi za majina kwa mazingira ya uboreshaji na mazingira ya uzalishaji.
Hatimaye, kuna makampuni makubwa ya ujasiriamali ambayo kundi moja la watengenezaji hawajui hata kuwepo kwa makundi mengine. Kampuni kama hii kwa ujumla inaweza kuajiri wasanidi programu wengine ambao huwasiliana nayo kupitia API zilizohifadhiwa vizuri. Kila kikundi kama hicho kina timu kadhaa na huduma ndogo ndogo. Katika kesi hii, unahitaji kutumia zana zote ambazo nilizungumza mapema.
Watayarishaji programu hawapaswi kupeleka huduma wao wenyewe na hawapaswi kufikia nafasi za majina ambazo haziwahusu. Katika hatua hii, inashauriwa kuwa na makundi kadhaa ili kupunguza "radius ya mlipuko" ya programu zilizosanidiwa vibaya, ili kurahisisha michakato ya bili na usimamizi wa rasilimali.
Kwa hivyo, matumizi sahihi ya nafasi za majina na shirika lako hukuruhusu kufanya Kubernetes kudhibitiwa zaidi, kudhibitiwa, salama na rahisi kunyumbulika.
Baadhi ya matangazo π
Asante kwa kukaa nasi. Je, unapenda makala zetu? Je, ungependa kuona maudhui ya kuvutia zaidi? Tuunge mkono kwa kuweka agizo au kupendekeza kwa marafiki,
Dell R730xd 2x nafuu katika kituo cha data cha Equinix Tier IV huko Amsterdam? Hapa tu
Chanzo: mapenzi.com