Jei esate kaip ir dauguma žmonių, tikriausiai naudojate išteklius, kurie nepriklauso jūsų klasteriui. Galbūt naudojate Taleo API tekstiniams pranešimams siųsti arba vaizdams analizuoti naudodami Google Cloud Vision API.
Jei naudojate tą patį serverio pusės užklausos galinį tašką visose savo aplinkose ir neplanuojate perkelti serverių į „Kubernetes“, tada visiškai gerai, kad paslaugos galinis taškas yra tiesiai jūsų kode. Tačiau yra daug kitų įvykių raidos scenarijų. Šioje „Kubernetes“ geriausios praktikos serijoje sužinosite, kaip naudoti įtaisytuosius „Kubernetes“ mechanizmus, kad atrastumėte paslaugas tiek klasteryje, tiek už jos ribų.
Įprastos išorinės paslaugos pavyzdys yra duomenų bazė, veikianti už Kubernetes klasterio ribų. Skirtingai nuo debesų duomenų bazių, pvz., „Google Cloud Data Store“ ar „Google Cloud Spanner“, kurios visai prieigai naudoja vieną galutinį tašką, dauguma duomenų bazių turi atskirus galutinius taškus skirtingoms aplinkybėms.
Geriausia tradicinių duomenų bazių, tokių kaip MySQL ir MongoDB, naudojimo praktika paprastai reiškia, kad jungiatės prie skirtingų komponentų skirtingoms aplinkoms. Galite turėti didelę mašiną gamybos duomenims ir mažesnę mašiną bandymo aplinkai. Kiekvienas iš jų turės savo IP adresą arba domeno pavadinimą, tačiau tikriausiai nenorėsite keisti savo kodo pereinant iš vienos aplinkos į kitą. Taigi, užuot koduodami šiuos adresus, galite naudoti „Kubernetes“ integruotą DNS pagrįstą išorinių paslaugų aptikimą taip pat, kaip ir vietines „Kubernetes“ paslaugas.
Tarkime, kad naudojate „MongoDB“ duomenų bazę „Google Compute Engine“. Jūs būsite įstrigę šiame hibridiniame pasaulyje, kol pavyks jį perkelti į klasterį.
Laimei, galite naudoti statines Kubernetes paslaugas, kad šiek tiek palengvintumėte savo gyvenimą. Šiame pavyzdyje sukūriau MongoDB serverį naudodamas „Google Cloud Launcher“. Kadangi jis sukurtas tame pačiame tinkle (arba Kubernetes klasterio VPC), jis pasiekiamas naudojant didelio našumo vidinį IP adresą.
Tai yra numatytasis „Google Cloud“ nustatymas, todėl jums nereikia nieko konfigūruoti. Dabar, kai turite IP adresą, pirmas žingsnis yra sukurti paslaugą. Galite pastebėti, kad šiai paslaugai nėra pogrupių parinkėjų. Tai yra, sukūrėme paslaugą, kuri nežinos, kur siųsti srautą. Tai leis jums rankiniu būdu sukurti galutinio taško objektą, kuris gaus srautą iš šios paslaugos.
Šis kodo pavyzdys rodo, kad galutiniai taškai nustato duomenų bazės IP adresą naudodami tą patį mongo pavadinimą kaip ir paslauga.
„Kubernetes“ naudos visus IP adresus, kad surastų galinius taškus, tarsi jie būtų įprasti „Kubernetes Pod“, todėl dabar galite pasiekti duomenų bazę naudodami paprastą ryšio eilutę su aukščiau nurodytu pavadinimu mongodb://mongo. Kode visai nereikia naudoti IP adresų.
Jei IP adresai ateityje pasikeis, galite tiesiog atnaujinti savo galinius taškus nauju IP adresu ir jūsų programų nereikės keisti jokiu papildomu būdu.
Jei naudojate duomenų bazę, priglobtą trečiosios šalies priegloboje, tikėtina, kad prieglobos savininkai suteikė jums vienodą išteklių identifikatoriaus URI, prie kurio galite prisijungti. Taigi, jei jums buvo suteiktas IP adresas, galite tiesiog naudoti ankstesnį metodą. Šis pavyzdys rodo, kad turiu dvi MongoDB duomenų bazes, priglobtas mLab priegloboje.
Viena yra kūrėjų duomenų bazė, o kita - gamybos duomenų bazė. Šių duomenų bazių ryšio eilutės atrodo taip – mLab suteikia jums dinaminį URI ir dinaminį prievadą. Kaip matote, jie yra skirtingi.
Norėdami tai abstrahuoti, naudokite Kubernetes ir prisijunkite prie kūrėjų duomenų bazės. Galite sukurti išorinį Kubernetes paslaugos pavadinimą, kuris suteiks jums statinę paslaugą, kuri perduos srautą į išorinę paslaugą.
Ši paslauga atliks paprastą CNAME persiuntimą branduolio lygiu ir turės minimalų poveikį našumui. Dėl to galite naudoti paprastesnę ryšio eilutę.
Tačiau kadangi išorinis pavadinimas naudoja CNAME persiuntimą, jis negali atlikti prievado persiuntimo. Todėl šis sprendimas taikomas tik statiniams prievadams ir negali būti naudojamas su dinaminiais prievadais. Tačiau „mLab Free Tier“ pagal numatytuosius nustatymus suteikia vartotojui dinaminį prievado numerį ir jūs negalite jo pakeisti. Tai reiškia, kad jums reikia skirtingų dev ir prod ryšio komandų eilučių. Blogas dalykas yra tai, kad tam reikės užkoduoti prievado numerį. Taigi, kaip priversti prievado peradresavimą veikti?
Pirmas žingsnis yra gauti IP adresą iš URI. Jei paleisite nslookup, pagrindinio kompiuterio pavadinimą arba ping URI, galite gauti duomenų bazės IP adresą. Jei paslauga jums grąžina kelis IP adresus, visi šie adresai gali būti naudojami objekto galiniuose taškuose.
Vienas dalykas, kurį reikia atsiminti, yra tai, kad IP URI gali keistis be įspėjimo, todėl juos naudoti gamyboje yra gana rizikinga. Naudodami šį IP adresą galite prisijungti prie nuotolinės duomenų bazės nenurodydami prievado. Taigi Kubernetes paslauga uosto persiuntimą atlieka gana skaidriai.
Susiejimas arba išorinių išteklių susiejimas su vidiniais suteikia jums lankstumo ateityje naudoti šias paslaugas klasteryje, tuo pačiu sumažinant pertvarkymo pastangas. Tai taip pat palengvina valdymą ir leidžia suprasti, kokias išorines paslaugas naudoja jūsų įmonė.
Tęsinys bus labai greitai...
Kai kurie skelbimai 🙂
Dėkojame, kad likote su mumis. Ar jums patinka mūsų straipsniai? Norite pamatyti įdomesnio turinio? Palaikykite mus pateikdami užsakymą ar rekomenduodami draugams,
„Dell R730xd“ 2 kartus pigiau „Equinix Tier IV“ duomenų centre Amsterdame? Tik čia
Šaltinis: www.habr.com