Wann Dir wéi déi meescht Leit sidd, benotzt Dir wahrscheinlech Ressourcen déi ausserhalb vun Ärem Cluster lafen. Vläicht benotzt Dir d'Taleo API fir SMSen ze schécken, oder analyséiert Biller mat der Google Cloud Vision API.
Wann Dir dee selwechte Server-Säit Ufro Endpunkt an all Ären Ëmfeld benotzt an net plangt Är Serveren op Kubernetes ze migréieren, dann ass et perfekt fir e Service Endpunkt direkt an Ärem Code ze hunn. Wéi och ëmmer, et gi vill aner Szenarie fir d'Entwécklung vun Eventer. An dëser Kubernetes Best Practices Serie léiert Dir wéi Dir déi agebaute Mechanismen vu Kubernetes benotzt fir Servicer souwuel bannen wéi ausserhalb vum Cluster z'entdecken.
E Beispill vun engem gemeinsamen externen Service ass eng Datebank ausserhalb vun engem Kubernetes Cluster. Am Géigesaz zu Cloud Datenbanken wéi Google Cloud Data Store oder Google Cloud Spanner, déi en eenzegen Endpunkt fir all Zougang benotzen, hunn déi meescht Datenbanken separat Endpunkte fir verschidden Ëmstänn.
Beschte Praktiken fir traditionell Datenbanken wéi MySQL a MongoDB ze benotzen bedeit normalerweis datt Dir mat verschiddene Komponenten fir verschidden Ëmfeld verbënnt. Dir kënnt eng grouss Maschinn fir Produktiounsdaten hunn an eng méi kleng Maschinn fir d'Testëmfeld. Jidderee vun hinnen wäert seng eege IP Adress oder Domain Numm hunn, awer Dir wëllt Äre Code wahrscheinlech net änneren wann Dir vun engem Ëmfeld an en anert plënnert. Also amplaz dës Adressen ze hardcodéieren, kënnt Dir Kubernetes 'built-in DNS-baséiert extern Service Entdeckung op déiselwecht Manéier wéi gebierteg Kubernetes Servicer benotzen.

Loosst eis soen datt Dir eng MongoDB Datebank op Google Compute Engine leeft. Dir wäert an dëser Hybrid Welt hänke bleiwen bis Dir et fäerdeg bréngt et an de Cluster ze transferéieren.
Glécklecherweis kënnt Dir statesch Kubernetes Servicer benotzen fir Äert Liewen e bësse méi einfach ze maachen. An dësem Beispill hunn ech e MongoDB Server erstallt mat Google Cloud Launcher. Well et am selwechte Netzwierk (oder Kubernetes Cluster VPC) erstallt gëtt, gëtt et mat enger performanter interner IP Adress zougänglech.

Dëst ass d'Standardastellung op Google Cloud, also musst Dir näischt konfiguréieren. Elo datt Dir eng IP Adress hutt, ass den éischte Schrëtt e Service ze kreéieren. Dir kënnt bemierken datt et keng Podselektorer fir dëse Service gëtt. Dat ass, mir hunn e Service erstallt deen net wësse wou de Traffic schéckt. Dëst erlaabt Iech manuell en Endpunktobjekt ze kreéieren deen Traffic vun dësem Service kritt.

Déi folgend Code Beispill weist datt d'Endpunkte d'IP Adress fir d'Datebank bestëmmen mat dem selwechte Mongo Numm wéi de Service.

Kubernetes wäert all IP Adressen benotzen fir Endpunkte ze fannen, wéi wa se regelméisseg Kubernetes Pods wieren, also kënnt Dir op d'Datebank mat engem einfache Verbindungsstring op den uewe genannte Numm mongodb: // mongo. Et ass guer net néideg IP Adressen an Ärem Code ze benotzen.
Wann d'IP Adressen an Zukunft änneren, kënnt Dir Är Endpunkte einfach mat der neier IP Adress aktualiséieren an Är Uwendungen mussen net op eng zousätzlech Manéier geännert ginn.
Wann Dir eng Datebank benotzt, déi op engem Drëtt-Partei-Host gehost gëtt, ass et wahrscheinlech datt d'Besëtzer vum Host Iech eng Uniform Resource Identifier URI zur Verfügung gestallt hunn fir matzemaachen. Also wann Dir eng IP Adress kritt hutt, kënnt Dir einfach déi viregt Method benotzen. Dëst Beispill weist datt ech zwee MongoDB Datenbanken op engem mLab Host gehost hunn.

Eent ass d'Entwéckler Datebank an déi aner ass d'Produktioun Datebank. D'Verbindungsstringe fir dës Datenbanken kucken esou aus - mLab bitt Iech eng dynamesch URI an en dynamesche Port. Wéi Dir gesitt, si se anescht.

Fir dëst ewech ze abstrakt, loosst eis Kubernetes benotzen a Verbindung mat der Entwéckler Datebank. Dir kënnt en externen Kubernetes Servicenumm erstellen, deen Iech e statesche Service gëtt deen den Traffic op den externen Service weidergeleet.

Dëse Service wäert einfach CNAME Forwarding um Kernelniveau mat minimalem Leeschtungsimpakt ausféieren. Dank dësem kënnt Dir eng méi einfach Verbindungsstring benotzen.
![]()
Mä well den externen Numm benotzt CNAME Forwarding, et kann net port Forwarding Leeschtunge. Dofir ass dës Léisung nëmme fir statesch Ports applicabel a kann net mat dynamesche Ports benotzt ginn. Awer mLab Free Tier gëtt dem Benotzer eng dynamesch Portnummer par défaut an Dir kënnt et net änneren. Dëst bedeit datt Dir verschidde Verbindungsbefehllinne fir Dev a Prod braucht. Déi schlecht Saach ass datt dëst Iech erfuerdert d'Portnummer ze hardcode. Also wéi kritt Dir Port Forwarding fir ze schaffen?
Den éischte Schrëtt ass d'IP Adress vun der URI ze kréien. Wann Dir nslookup, Hostnumm oder den URI pingt, kënnt Dir d'IP Adress vun der Datebank kréien. Wann de Service Iech e puer IP Adressen zréckginn, da kënnen all dës Adressen um Enn vum Objet benotzt ginn.

Eng Saach fir am Kapp ze halen ass datt IP URIs ouni Préavis änneren kënnen, sou datt se zimmlech riskant sinn fir a Prod ze benotzen. Mat dëser IP Adress kënnt Dir mat enger Remote-Datebank verbannen ouni e Port ze spezifizéieren. Sou mécht de Kubernetes Service Port Forwarding ganz transparent.

Mapping, oder Kartéierung vun externe Ressourcen op intern, gëtt Iech d'Flexibilitéit fir dës Servicer am Cluster an Zukunft ze benotzen, wärend d'Refaktoréierungsefforten minimiséieren. Et mécht et och méi einfach ze verwalten an Asiicht ze ginn a wéi eng extern Servicer Är Firma benotzt.
Ganz geschwënn weiderféieren...

Puer Annoncen 🙂
Merci datt Dir bei eis bleift. Hutt Dir eis Artikelen gär? Wëllt Dir méi interessant Inhalt gesinn? Ënnerstëtzt eis andeems Dir eng Bestellung maacht oder Frënn empfeelt, , en eenzegaartegen Analog vun Entry-Level Serveren, dee vun eis fir Iech erfonnt gouf: (verfügbar mat RAID1 an RAID10, bis zu 24 Kären a bis zu 40GB DDR4).
Dell R730xd 2 Mol méi bëlleg an Equinix Tier IV Daten Zentrum zu Amsterdam? Nëmmen hei an Holland! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - vun $99! Liest iwwer
Source: will.com
