Jekk int bħal ħafna nies, probabilment qed tuża riżorsi li jaħdmu barra mill-cluster tiegħek. Forsi tuża l-API Taleo biex tibgħat messaġġi, jew tanalizza immaġini billi tuża l-API Google Cloud Vision.
Jekk tuża l-istess endpoint tat-talba min-naħa tas-server fl-ambjenti kollha tiegħek u ma tippjanax li temigra s-servers tiegħek għal Kubernetes, allura huwa perfettament tajjeb li jkollok endpoint tas-servizz dritt fil-kodiċi tiegħek. Madankollu, hemm ħafna xenarji oħra għall-iżvilupp ta 'avvenimenti. F'din is-serje tal-Aħjar Prattiki ta' Kubernetes, int ser titgħallem kif tuża l-mekkaniżmi integrati ta' Kubernetes biex tiskopri servizzi kemm ġewwa kif ukoll barra l-cluster.
Eżempju ta' servizz estern komuni huwa database li taħdem barra minn cluster Kubernetes. B'differenza mid-databases tas-sħab bħal Google Cloud Data Store jew Google Cloud Spanner, li jużaw endpoint wieħed għall-aċċess kollu, il-biċċa l-kbira tad-databases għandhom endpoints separati għal ċirkostanzi differenti.
L-aħjar prattiki għall-użu ta 'databases tradizzjonali bħal MySQL u MongoDB normalment ifissru li tikkonnettja ma' komponenti differenti għal ambjenti differenti. Jista 'jkollok magna kbira għad-dejta tal-produzzjoni u magna iżgħar għall-ambjent tat-test. Kull wieħed minnhom se jkollu l-indirizz IP jew l-isem tad-dominju tiegħu, imma probabilment ma tridx tibdel il-kodiċi tiegħek meta tiċċaqlaq minn ambjent għal ieħor. Allura minflok ma tikkodifika dawn l-indirizzi, tista' tuża l-iskoperta ta' servizzi esterni mibnija fuq id-DNS ta' Kubernetes bl-istess mod bħas-servizzi indiġeni ta' Kubernetes.
Ejja ngħidu li qed tmexxi database MongoDB fuq Google Compute Engine. Int tkun mwaħħla f'din id-dinja ibrida sakemm jirnexxilek tittrasferiha lill-cluster.
Fortunatament, tista 'tuża s-servizzi statiċi ta' Kubernetes biex tagħmlek ħajtek ftit aktar faċli. F'dan l-eżempju, ħloqt server MongoDB bl-użu ta 'Google Cloud Launcher. Peress li hija maħluqa fuq l-istess netwerk (jew Kubernetes cluster VPC), huwa aċċessat permezz ta 'indirizz IP intern ta' prestazzjoni għolja.
Dan huwa l-issettjar default fuq Google Cloud, sabiex ma jkollokx għalfejn tikkonfigura xejn. Issa li għandek indirizz IP, l-ewwel pass huwa li toħloq servizz. Tista' tinnota li m'hemmx seletturi tal-pods għal dan is-servizz. Jiġifieri ħloqna servizz li mhux se jkun jaf fejn jibgħat it-traffiku. Dan jippermettilek toħloq manwalment oġġett endpoint li se jirċievi traffiku minn dan is-servizz.
L-eżempju tal-kodiċi li ġej juri li l-endpoints jiddeterminaw l-indirizz IP għad-database bl-użu tal-istess isem mongo bħas-servizz.
Kubernetes se juża l-indirizzi IP kollha biex isib endpoints bħallikieku kienu Kubernetes Pods regolari, għalhekk issa tista’ taċċessa d-database b’sekwenza ta’ konnessjoni sempliċi mal-isem ta’ hawn fuq mongodb://mongo. M'hemm l-ebda ħtieġa li tuża l-indirizzi IP fil-kodiċi tiegħek.
Jekk l-indirizzi IP jinbidlu fil-futur, tista 'sempliċement taġġorna l-endpoints tiegħek bl-indirizz IP il-ġdid u l-applikazzjonijiet tiegħek ma jkollhomx għalfejn jiġu modifikati b'xi mod addizzjonali.
Jekk qed tuża database ospitata fuq host ta' parti terza, huwa probabbli li s-sidien tal-host ipprovdewlek URI ta' Identifikatur tar-Riżorsi Uniformi biex tikkonnettja miegħu. Mela jekk ingħatajt indirizz IP, tista 'sempliċement tuża l-metodu preċedenti. Dan l-eżempju juri li għandi żewġ databases MongoDB ospitati fuq host mLab.
Wieħed huwa d-database tal-iżviluppatur u l-ieħor huwa d-database tal-produzzjoni. Il-kordi tal-konnessjoni għal dawn id-databases jidhru bħal dawn - mLab jipprovdilek URI dinamiku u port dinamiku. Kif tistgħu taraw, huma differenti.
Biex tiġbed dan, ejja nużaw Kubernetes u qabbad mad-database tal-iżviluppatur. Tista 'toħloq isem estern tas-servizz Kubernetes, li jagħtik servizz statiku li jgħaddi t-traffiku lis-servizz estern.
Dan is-servizz se jwettaq sempliċi CNAME forwarding fil-livell tal-kernel b'impatt minimu fuq il-prestazzjoni. Grazzi għal dan tista 'tuża string ta' konnessjoni aktar sempliċi.
Iżda minħabba li l-isem estern juża t-trażmissjoni CNAME, ma jistax iwettaq port forwarding. Għalhekk, din is-soluzzjoni hija applikabbli biss għal portijiet statiċi u ma tistax tintuża ma 'portijiet dinamiċi. Iżda l-mLab Free Tier jagħti lill-utent numru tal-port dinamiku awtomatikament u ma tistax tbiddel. Dan ifisser li għandek bżonn linji ta 'kmand ta' konnessjoni differenti għal dev u prod. Il-ħaġa ħażina hija li dan jeħtieġ li inti hardcode n-numru tal-port. Allura kif tista 'tikseb port forwarding biex jaħdem?
L-ewwel pass huwa li tikseb l-indirizz IP mill-URI. Jekk tmexxi nslookup, hostname, jew ping l-URI, tista 'tikseb l-indirizz IP tad-database. Jekk is-servizz jirritornalek diversi indirizzi IP, allura dawn l-indirizzi kollha jistgħu jintużaw fl-endpoints tal-oġġett.
Ħaġa waħda li wieħed iżomm f'moħħu hija li l-URI tal-IP jistgħu jinbidlu mingħajr avviż, u jagħmluhom pjuttost riskjużi biex jintużaw fil-prod. Billi tuża dan l-indirizz IP, tista 'tikkonnettja ma' database remota mingħajr ma tispeċifika port. Għalhekk, is-servizz Kubernetes iwettaq port forwarding b'mod pjuttost trasparenti.
L-immappjar, jew l-immappjar tar-riżorsi esterni għal dawk interni, jagħtik il-flessibbiltà li tuża dawn is-servizzi fi ħdan il-cluster fil-futur filwaqt li timminimizza l-isforzi ta’ refactoring. Jagħmilha wkoll aktar faċli biex timmaniġġja u tipprovdi għarfien dwar liema servizzi esterni tuża l-kumpanija tiegħek.
Se titkompla dalwaqt...
Xi reklami 🙂
Grazzi talli bqajt magħna. Tħobb l-artikoli tagħna? Trid tara aktar kontenut interessanti? Appoġġuna billi tagħmel ordni jew tirrakkomanda lill-ħbieb,
Dell R730xd 2 darbiet orħos fiċ-ċentru tad-dejta Equinix Tier IV f'Amsterdam? Hawn biss
Sors: www.habr.com