Əgər siz də əksər insanlar kimisinizsə, çox güman ki, klasterinizdən kənarda işləyən resurslardan istifadə edirsiniz. Ola bilsin ki, siz mətn mesajları göndərmək üçün Taleo API-dən istifadə edirsiniz və ya Google Cloud Vision API-dən istifadə edərək şəkilləri təhlil edirsiniz.
Bütün mühitlərinizdə eyni server tərəfi sorğu son nöqtəsindən istifadə edirsinizsə və serverlərinizi Kubernetes-ə köçürməyi planlaşdırmırsınızsa, kodunuzda xidmətin son nöqtəsinin olması tamamilə yaxşıdır. Bununla belə, hadisələrin inkişafı üçün bir çox başqa ssenarilər var. Bu Kubernetes Ən Yaxşı Təcrübələr seriyasında siz həm klaster daxilində, həm də xaricdə xidmətləri kəşf etmək üçün Kubernetes-in daxili mexanizmlərindən necə istifadə edəcəyinizi öyrənəcəksiniz.
Ümumi xarici xidmətin nümunəsi Kubernetes klasterindən kənarda işləyən verilənlər bazasıdır. Bütün giriş üçün bir son nöqtədən istifadə edən Google Cloud Data Store və ya Google Cloud Spanner kimi bulud verilənlər bazalarından fərqli olaraq, verilənlər bazalarının əksəriyyətində müxtəlif vəziyyətlər üçün ayrıca son nöqtələr var.
MySQL və MongoDB kimi ənənəvi verilənlər bazalarından istifadə üçün ən yaxşı təcrübələr adətən müxtəlif mühitlər üçün müxtəlif komponentlərə qoşulmağınız deməkdir. İstehsal məlumatları üçün böyük bir maşına və sınaq mühiti üçün daha kiçik bir maşına sahib ola bilərsiniz. Onların hər birinin öz IP ünvanı və ya domen adı olacaq, lakin yəqin ki, bir mühitdən digərinə keçərkən kodunuzu dəyişmək istəməyəcəksiniz. Beləliklə, bu ünvanları sərt kodlaşdırmaq əvəzinə, yerli Kubernetes xidmətləri ilə eyni şəkildə Kubernetes-in daxili DNS əsaslı xarici xidmət kəşfindən istifadə edə bilərsiniz.
Tutaq ki, siz Google Compute Engine-də MongoDB verilənlər bazası işlədirsiniz. Onu klasterə köçürməyi bacarana qədər bu hibrid dünyada ilişib qalacaqsınız.
Xoşbəxtlikdən, həyatınızı bir az asanlaşdırmaq üçün statik Kubernetes xidmətlərindən istifadə edə bilərsiniz. Bu nümunədə mən Google Cloud Launcher istifadə edərək MongoDB server yaratdım. Eyni şəbəkədə (və ya Kubernetes klaster VPC) yaradıldığı üçün ona yüksək performanslı daxili IP ünvanından istifadə etməklə daxil olur.
Bu, Google Cloud-da defolt parametrdir, ona görə də heç nəyi konfiqurasiya etməyə ehtiyac yoxdur. İndi bir IP ünvanınız olduğundan, ilk addım bir xidmət yaratmaqdır. Bu xidmət üçün pod seçicilərin olmadığını görə bilərsiniz. Yəni trafiki hara göndərəcəyimizi bilməyəcək bir xidmət yaratdıq. Bu, bu xidmətdən trafik qəbul edəcək son nöqtə obyektini əl ilə yaratmağa imkan verəcək.
Aşağıdakı kod nümunəsi göstərir ki, son nöqtələr xidmətlə eyni monqo adından istifadə edərək verilənlər bazası üçün IP ünvanını təyin edir.
Kubernetes adi Kubernetes Podları kimi son nöqtələri tapmaq üçün bütün IP ünvanlarından istifadə edəcək, beləliklə, indi siz verilənlər bazasına yuxarıdakı mongodb://mongo adına sadə bir əlaqə xətti ilə daxil ola bilərsiniz. Kodunuzda IP ünvanlarından istifadə etməyə ümumiyyətlə ehtiyac yoxdur.
Gələcəkdə IP ünvanları dəyişərsə, siz sadəcə olaraq son nöqtələrinizi yeni IP ünvanı ilə yeniləyə bilərsiniz və tətbiqlərinizin heç bir əlavə şəkildə dəyişdirilməsinə ehtiyac qalmayacaq.
Əgər üçüncü tərəf hostunda yerləşdirilən verilənlər bazasından istifadə edirsinizsə, çox güman ki, hostun sahibləri sizə qoşulmaq üçün Vahid Resurs İdentifikatoru URI-ni təqdim ediblər. Beləliklə, sizə IP ünvanı verilibsə, sadəcə olaraq əvvəlki üsuldan istifadə edə bilərsiniz. Bu nümunə göstərir ki, mənim mLab hostunda yerləşdirilən iki MongoDB verilənlər bazam var.
Biri developer verilənlər bazası, digəri isə istehsal bazasıdır. Bu verilənlər bazaları üçün əlaqə sətirləri belə görünür - mLab sizə dinamik URI və dinamik port təqdim edir. Gördüyünüz kimi, onlar fərqlidir.
Bunu mücərrəd etmək üçün gəlin Kubernetes-dən istifadə edək və developer verilənlər bazasına qoşulaq. Siz xarici Kubernetes xidmət adı yarada bilərsiniz, bu sizə trafiki xarici xidmətə yönləndirəcək statik xidmət verəcək.
Bu xidmət ləpə səviyyəsində sadə CNAME yönləndirməsini minimal performans təsiri ilə həyata keçirəcək. Bunun sayəsində daha sadə bir əlaqə simindən istifadə edə bilərsiniz.
Lakin xarici ad CNAME yönləndirməsindən istifadə etdiyi üçün port yönləndirməsini həyata keçirə bilməz. Buna görə də, bu həll yalnız statik portlar üçün tətbiq edilir və dinamik portlarla istifadə edilə bilməz. Lakin mLab Free Tier istifadəçiyə standart olaraq dinamik port nömrəsi verir və siz onu dəyişə bilməzsiniz. Bu o deməkdir ki, inkişaf və məhsul üçün müxtəlif əlaqə əmr sətirlərinə ehtiyacınız var. Pis odur ki, bu, sizdən port nömrəsini kodlaşdırmağı tələb edəcək. Beləliklə, port yönləndirməsini necə işə salırsınız?
İlk addım URI-dən IP ünvanını əldə etməkdir. Nslookup, hostname və ya URI-yə ping göndərsəniz, verilənlər bazasının IP ünvanını əldə edə bilərsiniz. Xidmət sizə bir neçə IP ünvanını qaytarırsa, bu ünvanların hamısı obyektin son nöqtələrində istifadə edilə bilər.
Nəzərə almaq lazım olan bir şey odur ki, IP URI-lər xəbərdarlıq etmədən dəyişə bilər və bu, onları istehsalda istifadə etmək üçün olduqca risklidir. Bu IP ünvanından istifadə edərək, port göstərmədən uzaq verilənlər bazasına qoşula bilərsiniz. Beləliklə, Kubernetes xidməti port yönləndirməni kifayət qədər şəffaf şəkildə həyata keçirir.
Xəritəçəkmə və ya xarici resursları daxili resurslara uyğunlaşdırmaq sizə gələcəkdə klaster daxilində bu xidmətlərdən istifadə etmək üçün çeviklik verir və eyni zamanda refaktorinq səylərini minimuma endirir. O, həmçinin idarə etməyi və şirkətinizin hansı xarici xidmətlərdən istifadə etdiyi barədə məlumat verməyi asanlaşdırır.
Tezliklə davamı olacaq...
Bəzi reklamlar 🙂
Bizimlə qaldığınız üçün təşəkkür edirik. Məqalələrimiz xoşunuza gəlirmi? Daha maraqlı məzmun görmək istəyirsiniz? Sifariş verməklə və ya dostlarınıza tövsiyə etməklə bizə dəstək olun,
Dell R730xd Amsterdamdakı Equinix Tier IV məlumat mərkəzində 2 dəfə ucuzdur? Yalnız burada
Mənbə: www.habr.com