Cisco Container Platform - Kontajnery, ktoré vám zmenia aplikáciu

Peter Frasch

Data Center Systems Engineer

peter.frasch@alef.com

Už nejakú dobu sa do zoznamu IT buzzwordov zaradil výraz kontajner. Kontajnerové technológie boli dlho primárne doménou open-source riešení štýlom DIY (do it yourself).

V ostatnom čase sa tejto technológii začali venovať aj seriózni hráči na poli informačných technológií v podobe vytvorenia komerčného produktu pre svojich zákazníkov. Kontajnery do firemného prostredia so všetkými sprievodnými službami, ktoré vyžaduje podnikový segment prináša aj Cisco Systems. Riešenie kontajnerovej technológie vo farbách Cisco sa volá Cisco Container Platform (skr. CCP).

Prečo si kontajnery všimli aj veľkí hráči?

Popularita kontajnerových technológií vyplýva z prirodzenej evolúcie v architektúre aplikácií. V skratke, od monolitických aplikácií na fyzických serveroch, cez aplikácie vo virtuálnych mašinách sme sa dostali k aplikáciám, ktoré fungujú ako klaster služieb bežiacich v kontajneroch. Virtuálne mašiny obsahujú okrem aplikácie aj operačný systém a knižnice. Kontajner nemá operačný systém, lebo služba bežiaca v kontajneri využíva príkazovú sadu operačného systému hostu. Pri každom kontajneri sa ušetrí časť RAM pamäte servera. Každá služba z klastra beží nezávisle od ostatných napriek tomu, že je súčasťou jednej aplikácie. Z pohľadu architektúry aplikácií sa dá veľmi zjednodušene povedať , že zásadný rozdiel je v spôsobe kódovania aplikácií. Sekcie kódu v monolitických aplikáciách sa pri micro-services aplikáciách dajú rozsekať na akési samostatné podprogramy, teda služby (micro-services) bežiace každá vo svojom vlastnom kontajneri, no s možnosťou nastavenia vzájomných závislostí (dependencies). Jednotlivé služby sa dajú následne oveľa ľahšie aktualizovať či funkčne vyladiť, než rozsiahly, často aj zle zdokumentovaný kód monolitickej aplikácie.

Jednoduchý príklad aplikácie s micro-services architektúrou. (Zdroj: avinetworks.com)

Za výhody micro-services architektúry aplikácií sa považuje:

  • Modularita – je výsledkom prepájania množstva mikroslužieb do celku, kedy sa potom aplikácia ľahšie vyvíja, testuje, ľahšie sa chápu funkcionality jednotlivých služieb, keďže služby majú svojich vlastníkov v podobe malých špecializovaných tímov vývojárov
  • Škálovateľnosť - mikroslužby sú implementované a nasadené nezávisle na sebe, je možné niektoré služby realizovať robustnejšie, alebo ich použiť viacnásobne, podľa potreby aplikácie. Aplikáciu je možné nasadiť distribuovanú v hybridnom prostredí naprieč cloud prostredím a privátnym DC.
  • Integrácia s heterogénnymi a staršími systémami – existujú prípady, kedy časti kódov monolitických aplikácii bolo možné nahradiť mikroslužbami. Týmto postupným, inkrementálnym spôsobom sa otvára schodná cesta pre modernizáciu existujúcich aplikácií.

Za nevýhody micro-services architektúry aplikácií :

Sú považované hlavne charakteristiky, ktoré vychádzajú primárne z nesprávne implementovaných princípov micro-services architektúry ako napríklad:

  • Volania medzi službami prostredníctvom siete majú privysoké latencie oproti in-service volaniam v monolitických aplikáciách.
  • Testovanie a nasadenie sú komplikovanejšie, pretože aktualizácia jednej služby cez závislosti ovplyvňuje aj funkcionality iných služieb v rámci aplikácie.
  • Vyššia náročnosť rozvoja aplikácie zapríčinená nesprávnym dizajnom služieb v aplikácii. Často priveľa mikro služieb vedie k náročnému manažovaniu funkcionalít aplikácie ako celku, alebo príliš komplikovanej štruktúre  závislostí medzi službami. Priveľké kódy jednotlivých služieb vedú k problémom monolitických aplikácií, ako napríklad, že jednotlivé služby už nie sú dostatočne nezávislé od iných a tým pádom sa nedajú samostatne spravovať, aktualizovať, škálovať, atď.

Micro-services architektúra nemusí byť univerzálne vhodná pre všetky situácie. Napríklad, ak má aplikácia dlhý životný cyklus, ide o funkčne stabilnú aplikáciu bez potreby častých a výrazných zmien, ktoré by ovplyvnili veľkú časť ostatného kódu aplikácie, atď. Na druhej strane, veľké množstvo aj známych firiem používa micro-services architektúru vo svojich aplikáciách, ktoré musia poskytovať služby pre veľké množstvo používateľov, byť dostupné nepretržite a pod. Sú medzi nimi mená ako Amazon, Facebook, Twitter, Spotify, Uber, Netflix atď. V zozname však nájdeme aj spoločnosti z tradičnejších segmentov hospodárstva, ako napríklad finančné inštitúcie. Trend digitálnej transformácie v podobe prechodu na kontajnerizované aplikácie nezadržateľne smeruje aj do podnikov v rôznych segmentoch priemyslu a služieb. A práve toto je primárny dôvod, prečo dáva aj veľkým spoločnostiam zmysel prísť s vlastným štandardizovaným riešením kontajnerových technológií spolu so všetkými službami, ktoré od svojich dodávateľov zákazníci očakávajú.

Architektúru micro-services využíva už dlhodobo aj spoločnosť Cisco. Má ju implementovanú napríklad v operačnom systéme NX-OS prepínačov Nexus. Jednotlivé služby/protokoly (v NX-OS CLI reprezentované príkazom feature) bežia v kontajneroch. Samozrejme táto implementácia kontajnerov je proprietárnym, uzavretým ekosystémom optimalizovaným pre potreby prepínačov Nexus. Aby aj zákazníci Cisco mali možnosť využívať kontajnerovú infraštruktúru, bolo potrebné vytvoriť univerzálnejší produkt, teda už spomínané riešenie Cisco Container Platform.

Ako funguje Cisco Container Platform?

CCP je kontajnerové riešenie, ktoré poskytuje štandardnú podporu zabezpečovanú výrobcom, teda spoločnosťou Cisco. Ide o platformu s funkcionalitami poskytujúcimi komplexné riešenie vhodné pre nasadenie v komerčnej produkčnej prevádzke.

Cisco riešenie pozostáva z komponentov pochádzajúcich z overených open-source riešení. Primárne ide o komponenty ako Docker, Kubernetes, Contiv, Calico, NGINX a pod. Samozrejme CCP riešenie môže využiť aj Cisco komponenty ako HyperFlex infraštruktúru alebo integráciu s Cisco ACI riešením.

Základom CCP riešenia sú virtuálne hosty vo VMware prostredí s operačným systémom Ubuntu. CCP prostredie sa rozdeľuje na tzv. Control Plane Cluster a Tenant Clusters (Data Plane). V Control Plane Cluster časti sa nachádzajú 4 VM s OS Ubuntu obsahujúce orchestračný nástroj Kubernetes. Jeden z VM plní v klastri funkciu master a ďalšie 3 VM majú funkciu worker. Tenant Clusters segment CCP predstavuje produkčné prostredie s Docker kontajnermi. Pomocou Kubernetes nástroja je možné nasadiť zostavu VM s Docker kontajner prostredím, ktoré tvoria jeden produkčný klaster. V každom klastri musí byť 1 master uzol (alebo 3, podľa konfigurácie) a viacero worker uzlov (podľa potreby). Celkový počet uzlov v klastri závisí od celkového množstva zdrojov (vCPU a RAM) pridelených uzlom a od nárokov aplikácií (micro-services) v Docker kontajneroch.

Ako ukazuje schéma riešenia CCP na obrázku, CCP systém je možné inštalovať na hyperkonvergované servery, konkrétne v rámci platformy Cisco HyperFlex, alebo tiež na štandardné servery ako Cisco UCS, alebo servery iných výrobcov. Na serverovej platforme musí bežať hypervisor od VMware -VSphere. VMware hosty sú manažované vCenter aplikáciou. V prípade použitia HyperFlexu, HX hosty sú navyše manažované cez HX Connect GUI. VMware prostredie musí byť predkonfigurované podľa požiadaviek CCP, aby sa následne mohlo nainštalovať samotné CCP riešenie.

Pre nainštalovanie CCP je potrené z Cisco web portálu stiahnuť 2 OVA súbory. Tzv. Control Plane Installer a Tenant Image. Oba OVA súbory je potrebné nasadiť do VMware domény ako VM. Zapnúť však je potrebné len Control Plane Installer VM. Práve cez tento installer pomocou Tenant Image OVA súboru sa do VM domény nainštaluje Control Plane Cluster časť CCP infraštruktúry. Primárnym komponentom Control Plane časti CCP je Kubernetes engine, cez ktorý sa vytvárajú a manažujú produkčné klastre. Z pohľadu prevádzky, v Control Plane časti CCP je potrebné mať možnosť monitorovania stavu klastra a logovania udalostí. Na monitoring a alerting sa používa open-source toolkit Prometheus a na analytiku a vizualizáciu open-source nástroj Grafana. Na logovacie účely sa inštalujú počas inštalácie CCP nástroje ako Elasticsearch, Fluentd, a Kibana, všetko open-source nástroje.

CCP je vhodné pre on-premise nasadenie, ale tiež aj pre nasadenie do cloud prostredia. Samozrejme je možné produkčné klastre nasadiť aj v hybridnom prostredí. On-prem nasadenie je podporované vo VMware prostredí s vSphere hosťami a vCenter manažmentom. Z cloud prostredí sú podporované Amazon Web Services EKS (AWS EKS), Azure Kubernetes Service (AKS) a Google Kubernetes Engine (GKE). V rámci produkčných klastrov s Docker kontajnermi je možné využiť aj advanced L7 load balancer NGINX.

Integrácia Cisco ACI s CCP poskytuje sieťové služby s využitím intention-based politík pre komunikáciu medzi kontajnermi, VM a fyzickými servermi. ACI prostredie je úzko integrované so sieťovou infraštruktúrou ACI fabric.

Podpora CCP od Cisco sa vzťahuje na celé riešenie. V rámci CCP riešenia pokrýva nielen Cisco komponenty ako HyperFlex platformu či Cisco ACI prostredie, ale tiež aj komponenty tretích strán ako napríklad Kubernetes engine od Google, ktorý je integrálnou súčasťou CCP riešenia. V prípade problémov s Kubernetes komponentom CCP je možné ho riešiť prostredníctvom Cisco TAC centra.

 V prípade záujmu o túto technológiu

 kontaktujte nás