Най-добри практики Kubernetes. Картографиране на външни услуги

Най-добри практики Kubernetes. Създаване на малки контейнери
Най-добри практики Kubernetes. Организиране на Kubernetes с пространства от имена
Най-добри практики Kubernetes. Проверка на жизнеността на Kubernetes с тестове Readiness и Liveness
Най-добри практики за Kubernetes. Настройка на заявки и лимити на ресурси
Най-добри практики за Kubernetes. Коректно изключване Terminate

Ако сте като повечето хора, вероятно използвате ресурси, които функционират извън вашия клъстер. Може би използвате API на Taleo за изпращане на текстови съобщения или анализирате изображения с API на Google Cloud Vision.

Ако използвате една и съща крайна точка endpoint — точка за приемане на заявки на страна на сървъра във всичките си среди и не планирате да прехвърлите сърверите си в Kubernetes, е напълно нормално да имате endpoint на услугата направо в кода си. Въпреки това, съществуват множество други сценарии. В тази серия „Най-добрите практики на Kubernetes“ ще научите как да използвате вградените механизми на Kubernetes за откриване на услуги както вътре, така и извън клъстера.

Като пример за широко разпространена външна услуга може да се посочи база данни, работеща извън клъстера Kubernetes. За разлика от облачните бази данни като Google Cloud Data Store или Google Cloud Spanner, които използват една крайна точка за всички видове достъп, повечето бази данни имат отделни крайни точки за различни обстоятелства.
Предварителната практика при използване на традиционни бази данни, като MySQL и MongoDB, обикновено изисква да се свързвате с различни компоненти в различни среди. Може да имате голям сървър за продукционни данни и по-малък сървър за тестова среда. Всеки от тях ще има свой IP адрес или домейн име, но със сигурност не искате да променяте кода си при преминаване от една среда в друга. Затова вместо да кодите твърдо тези адреси, можете да използвате вграденото в Kubernetes откриване на външни услуги на базата на DNS точно както за нативните услуги на Kubernetes.

Най-добри практики Kubernetes. Картографиране на външни услуги

Предположете, че стартирате база данни MongoDB в Google Compute Engine. Ще останете в този хибриден свят, докато не успеете да я прехвърлите в клъстера.

На щастие, можете да използвате статични услуги на Kubernetes, за да си облекчите живота поне малко. В този пример създадох сървър MongoDB, използвайки Google Cloud Launcher. Тъй като е създаден в същата мрежа (или VPC на клъстера Kubernetes), достъпът до него се осъществява чрез високопроизводителен вътрешен IP адрес.

Най-добри практики Kubernetes. Картографиране на външни услуги

В Google Cloud това е настройка по подразбиране, така че не е нужно да конфигурирате нищо. Сега, когато имате IP адрес, първата стъпка е създаването на услуга. Можете да забележите, че за тази услуга няма селектори на подовете. Тоест, създадохме услуга, която няма да знае къде да изпраща трафик. Това позволява ръчно да създадете обект на endpoint, който ще получава трафик от тази услуга.

Най-добри практики Kubernetes. Картографиране на външни услуги

Следващият пример за код показва, че крайните точки определят IP адрес за базата данни, използвайки същото име mongo, което и услугата.

Най-добри практики Kubernetes. Картографиране на външни услуги

Kubernetes ще използва всички IP адреси, за да намери крайните точки, както ако те бяха обикновени подове на Kubernetes, така че сега можете да получите достъп до базата данни с проста стринг за свързване на гореспоменатото име mongodb://mongo. При това не е необходимо изобщо да използвате IP адреси в кода си.

Ако в бъдеще IP адресите се променят, можете просто да обновите крайните точки с новия IP адрес, и приложенията ви няма да трябва да бъдат променяни по никакъв допълнителен начин.

Ако използвате база данни, хоствана на външен хост, то вероятно собствениците на хоста ви предоставили унифициран идентификатор на ресурса URI за свързване. Така че, ако сте получили IP адрес, можете просто да се възползвате от предишния метод. Този пример показва, че имам две MongoDB бази данни, хоствани на mLab.

Най-добри практики Kubernetes. Картографиране на външни услуги

Едната е база данни за разработчици, а другата – продукционна БД. Стринг за свързване на тези бази данни изглеждат по следния начин – mLab ви осигурява динамичен URI и динамичен порт. Както виждате, те са различни.

Най-добри практики Kubernetes. Картографиране на външни услуги

За да се абстрахираме от това, използваме Kubernetes и се свързваме с базата данни за разработчици. Можете да създадете външно име на услугата Kubernetes, което ще ви предостави статична услуга, която ще пренасочва трафик към външната услуга.

Най-добри практики Kubernetes. Картографиране на външни услуги

Тази услуга ще извърши проста CNAME пренасочване на ниво ядро, което ще има минимално влияние върху производителността. Благодарение на това можете да използвате по-проста стринг за свързване.

Най-добри практики Kubernetes. Картографиране на външни услуги

Но тъй като външното име използва пренасочване CNAME, то не може да изпълнява преназначение на портове. Следователно, това решение е приложимо само за статични портове и не може да се използва с динамични портове. Обаче безплатният mLab Free Tier по подразбиране предоставя на потребителя динамичен номер на порта, и вие не можете да го промените. Това означава, че за dev и prod ви трябват различни команди за свързване. Лошото е, че ще трябва да кодиране номерът на порта. Как да накарате да работи пренасочването на портовете?

Първата стъпка е да получите IP адреса от URI. Ако изпълните команда nslookup, hostname или пингнете URI, можете да получите IP адреса на базата данни. Ако услугата при това ви върне няколко IP адреса, всички тези адреси могат да се използват в крайните точки на обекта.

Най-добри практики Kubernetes. Картографиране на външни услуги

Трябва да запомните, че IP адресите на URI могат да се променят без предизвестие, така че е доста рисковано да се използват в prod. С такъв IP адрес можете да се свържете с отдалечена база данни, без да посочвате порта. Следователно, услугата Kubernetes доста прозрачно изпълнява пренасочването на портовете.

Най-добри практики Kubernetes. Картографиране на външни услуги

Мапингът, или съпоставянето на външни ресурси с вътрешни, ви дава възможност да използвате тези услуги гъвкаво в бъдеще в кластерите, като минимизирате усилията за рефакторинг. Той също така улеснява управлението и дава разбиране за това, какви външни услуги използва вашата компания.

Продължението ще бъде скоро...

Възпроизведи видео

Малко реклама 🙂

Благодаря, че оставате с нас. Харесвате ли нашите статии? Искате ли да видите повече интересни материали? Подкрепете ни, като направите поръчка или я препоръчате на познати, облачни VPS за разработчици от $4.99, уникален аналог на entry-level сървъри, създаден от нас за Вас: Всичко за VPS (KVM) E5-2697 v3 (6 ядра) 10GB DDR4 480GB SSD 1Gbps от $19 или как да разделите правилно сървъра? (налични опции с RAID1 и RAID10, до 24 ядра и до 40GB DDR4).

Dell R730xd два пъти по-евтин в дата-центъра Equinix Tier IV в Амстердам? Само при нас 2 х Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100TB от $199 в Нидерландия! Dell R420 — 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB — от $99! Четете за това Как да изградим инфраструктура от корпоративен клас с прилагане на сървъри Dell R730xd Е5-2650 v4 на стойност 9000 евро за копейки?

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster