„Aký je rozdiel medzi Kubernetes a OpenShift?“ – táto otázka sa objavuje s pozoruhodnou pravidelnosťou. V skutočnosti je to dosť podobné tomu, ako sa pýtať, čím sa automobil líši od motora. Ak pokračujeme v analógiách, automobil je hotový produkt, ktorý môžeme okamžite používať, jednoducho: nasadnete a idete. Na druhej strane, aby vás motor niekam odviezol, musíte ho najprv doplniť množstvom ďalších vecí, aby ste nakoniec dostali ten istý automobil.

Preto je Kubernetes motor, okolo ktorého je zložený automobil (platforma) značky OpenShift, ktorý vás vedie k cieľu.
V tomto článku chceme pripomenúť a podrobnejšie preskúmať nasledujúce kľúčové body:
- Kubernetes je srdce platformy OpenShift. A ide o 100% certifikovaný Kubernetes, s úplne otvoreným kódom a bez akýchkoľvek proprietárnych prvkov. V skratke:
- API pre klaster OpenShift je úplne rovnaký ako Kubernetes.
- Ak kontajner pracuje v akejkoľvek inej systéme Kubernetes, bude bez akýchkoľvek zmien pracovať aj na OpenShift. Nie je potrebné vykonávať úpravy aplikácií.
- OpenShift nielenže dopĺňa Kubernetes užitočnými funkciami a možnosťami. Rovnako ako automobil, OpenShift je okamžite pripravený na použitie, môže byť okamžite uvedený do prevádzky a, ako ukážeme nižšie, výrazne zjednodušuje život vývojárovi. Preto je OpenShift v dvoch osobách. Je to úspešná a široko známa PaaS platforma podnikovej triedy z pohľadu vývojára. A zároveň je to super spoľahlivé riešenie triedy Container-as-a-Service z pohľadu priemyselnej prevádzky.
OpenShift je Kubernetes so 100% certifikáciou od nadácie CNCF.
V základe OpenShift leží Preto po príslušnom školení používatelia obdivujú silu kubectl. A tí, ktorí prešli na OpenShift z Kubernetes Clusteru, často hovoria, ako sa im veľmi páči, že po presmerovaní kubeconfig na klaster OpenShift všetky existujúce skripty fungujú bezchybne.
Určite ste počuli o OpenShiftovej príkazovej utilite s názvom OC. Je úplne kompatibilná s príkazmi kubectl, plus ponúka niekoľko užitočných pomocníkov, ktorí sa hodia pri vykonávaní rôznych úloh. Ale najprv si bližšie objasníme kompatibilitu OC a kubectl:
Príkazy kubectl
Príkazy OC
kubectl get pods
oc get pods
kubectl get namespaces
oc get namespaces
kubectl create -f deployment.yaml
oc create -f deployment.yaml
Takto vyzerajú výsledky použitia kubectl na OpenShift API:
• kubectl get pods – očakávane vracia pod.

• kubectl get namespaces – očakávane vracia priestory názvov.

Príkaz kubectl create -f mydeployment.yaml vytvára kubernetesové zdroje rovnako ako na akejkoľvek inej Kubernetes platforme, ako je ukázané vo videu nižšie:
Inými slovami, všetky Kubernetes API sú plne dostupné v OpenShift s 100% kompatibilitou. Práve preto .
OpenShift dopĺňa Kubernetes užitočnými funkciami
Kubernetes API sú na 100% dostupné v OpenShift, ale štandardnej Kubernetes utilite kubectl zjavne chýba funkčnosť a pohodlnosť. Preto Red Hat doplnil Kubernetes užitočnými funkciami a nástrojmi príkazového riadku, ako OC (skratka pre OpenShift client) a ODO (OpenShift DO, tento nástroj je určený pre vývojárov).
1. Nástroj OC – je mocnejšou a pohodlnejšou alternatívou ku Kubectl
Napríklad na rozdiel od kubectl umožňuje vytvárať nové priestory názvov a jednoducho prepnúť kontext, ako aj ponúka množstvo užitočných príkazov pre vývojárov, napríklad na vytváranie kontajnerových obrazov a nasadzovanie aplikácií priamo z zdrojového kódu alebo binárnych súborov (Source-to-image, s2i).
Pozrime sa na príkladoch, ako vstavané pomocné nástroje a rozšírená funkčnosť nástroja OC pomáhajú zjednodušiť každodennú prácu.
Prvý príklad – správa priestorov názvov. V každom Kubernetes klastri je vždy niekoľko priestorov názvov. Zvyčajne sa používajú na vytvorenie vývojových a produkčných prostredí, ale môžu sa použiť aj na to, aby napríklad každý vývojár dostal osobný 'pieskovisko'. V praxi to vedie k tomu, že sa vývojár musí často prepínať medzi priestormi názvov, pretože kubectl pracuje v kontexte aktuálneho priestoru. Preto v prípade kubectl ľudia aktívne používajú pomocné skripty na tento účel. Ale pri používaní OC je na prepnutie na potrebný priestor potrebné len povedať ‘oc project priestor_názvu’.
Nespomínate si, ako sa volá požadovaný názov priestoru? Žiadny problém, jednoducho zadajte “oc get projects”, aby ste získali úplný zoznam. Skepticky sa pýtate, ako to funguje, ak máte prístup len k obmedzenej podmnožine priestorov na klastri? No, pretože kubectl to robí správne len vtedy, ak vám RBAC umožňuje vidieť všetky priestory na klastri, a v veľkých klastroch sa takéto oprávnenia neudelia len tak hocikomu. Takže odpovedáme: pre OC to vôbec nie je problém a ľahko v takej situácii poskytne úplný zoznam. Takéto drobnosti prispievajú k zameranosti Openshift na podniky a dobrej škálovateľnosti tejto platformy v oblasti používateľov a aplikácií.
2. ODO – vylepšená verzia kubectl pre vývojárov.
Ako ďalší príklad vylepšení Red Hat OpenShift v porovnaní s Kubernetes môžeme uviesť príkazový nástroj ODO. Je určený pre vývojárov a umožňuje rýchlo nasadiť lokálny kód na vzdialený klastri OpenShift. Okrem toho môžete optimalizovať vnútorné procesy, aby ste okamžite synchronizovali všetky zmeny kódu s kontajnermi na vzdialenom klastri OpenShift bez toho, aby ste museli znova vykonávať zostavenie, umiestnenie do registru a opätovné nasadenie obrazov.
Pozrime sa, ako OC a ODO uľahčujú prácu s kontajnermi a Kubernetes.
Jednoducho porovnajme pár pracovných tokov, keď sú postavené na základe kubectl, a keď sa používajú OC alebo ODO.
• Nasadenie kódu na OpenShift pre tých, ktorí neovládajú jazyk YAML:
Kubernetes / kubectl
$> git clone
1- Vytvoríme Dockerfile, ktorý zostaví obraz z kódu
————–
FROM node
WORKDIR /usr/src/app
COPY package*.json ./
COPY index.js ./
COPY ./app ./app
RUN npm install
EXPOSE 3000
CMD [ “npm”, “start” ]
————–
2- Vykonáme zostavenie obrazu
$> podman build …
3- Prihlásime sa do registra
podman login …
4- Umiestnime obraz do registra
podman push
5- Vytvoríme yaml súbory na nasadenie aplikácie (deployment.yaml, service.yaml, ingress.yaml) – to je absolútne minimum.
6- Nasadzujeme manifestové súbory:
Kubectl apply -f .
OpenShift / oc
$> oc new-app – názov_našej_aplikácie
OpenShift / odo
$> git clone
$> odo create component nodejs myapp
$> odo push
• Prepnúť kontext: zmena pracovného priestoru alebo pracovného klastra.
Kubernetes / kubectl
1- Vytvoríme kontext v kubeconfig pre projekt “myproject”
2- kubectl set-context …
OpenShift / oc
oc project “myproject”
Kontrola kvality: „Tu sa objavila jedna zaujímavá funkcia, zatiaľ v alfa verzii. Možno ju zavedieme do produkcie?“
Predstavte si, že vás posadia do pretekárskeho auta a povedia: „Nainštalovali sme tu brzdy nového typu a úprimne, zatiaľ nie všetko je s nimi v poriadku... Ale nebojte sa, budeme ich aktívne zdokonaľovať priamo počas šampionátu.“ Ako sa vám taká perspektíva páči? Nám v Red Hat sa to celkom nepozdáva. 🙂
Preto sa snažíme vyhýbať alfa verziám, pokiaľ nie sú dostatočne zrelé a neprejdú dôkladným bojovým testovaním a necítime, že ich môžeme bezpečne používať. Zvyčajne všetko najprv prejde fázou Dev Preview a potom cez a až potom vyjde vo forme verejného vydania (GA), ktorý je stabilný tak, že sa hodí do produkcie.
Prečo tak? Pretože, rovnako ako pri vývoji akéhokoľvek iného softvéru, nie všetky pôvodné myšlienky v Kubernetes dospejú do finálneho vydania. Alebo dospejú, a dokonca zachovajú plánovanú funkcionalitu, ale ich implementácia sa radikálne líši od tej, ktorá bola v alfa verzii. Keďže tisíce a tisíce zákazníkov Red Hat používajú OpenShift na podporu kritických úloh, kladieme osobitný dôraz na stabilitu našej platformy a dlhodobú podporu.
Red Hat vedome vydáva časté verzie OpenShift a aktualizuje verziu Kubernetes, ktorá je jej súčasťou. Napríklad, v aktuálnom GA vydaní OpenShift 4.3 je integrovaný Kubernetes 1.16, ktorý zaostáva len o jeden za upstream verziou Kubernetes s číslom 1.17. Takto sa snažíme poskytnúť zákazníkovi Kubernetes podnikovej triedy a zabezpečiť dodatočnú kontrolu kvality v procese vydávania nových verzií OpenShift.
Softvérové opravy: „V tej verzii Kubernetes, ktorú máme v produkcii, sa našla diera. A môže sa uzavrieť iba aktualizáciou o tri verzie vyššie. Alebo existujú aj iné možnosti?“
V rámci otvoreného projektu Kubernetes sa softvérové opravy zvyčajne vydávajú v nasledujúcom vydaní, niekedy pokrývajú jednu alebo dve predchádzajúce medzi verzie, čo pokrýva celé obdobie až 6 mesiacov dozadu.
Red Hat sa právom pýši tým, že vydáva kritické opravy skôr ako ostatní a poskytuje podporu na oveľa dlhšie obdobie. Uvedomme si napríklad zraniteľnosť s eskaláciou oprávnení v Kubernetes (): objavila sa v Kubernetes 1.11, pričom opravy pre predchádzajúce verzie vydali iba do verzie 1.10.11, čím zostala táto diera vo všetkých predchádzajúcich verziách Kubernetes, od 1.x po 1.9.
Na druhej strane, (kde je Kubernetes 1.2), pričom pokryla deväť vydaní OpenShift a jasne preukázala starostlivosť o zákazníkov (viac informácií ).
Ako OpenShift a Red Hat posúvajú Kubernetes dopredu
Red Hat zaujíma druhé miesto čo do objemu príspevkov do otvoreného projektu Kubernetes, pričom ju predbehne len Google; z troch z piatich najplodnejších vývojárov sú zamestnanci Red Hat. Ďalší málo známy fakt: mnohé kriticky dôležité funkcie sa objavili v Kubernetes práve na podnet Red Hat, najmä také, ako sú:
- RBAC. V Kubernetes neexistovali funkcie RBAC (ClusterRole, ClusterRoleBinding), kým sa inžinieri z Red Hat nerozhodli ich implementovať ako súčasť platformy, a nie ako dodatočnú funkcionalitu OpenShift. Nebojí sa Red Hat vylepšovať Kubernetes? Samozrejme, že nie, pretože Red Hat striktne dodržiava zásady otvoreného kódu a nehrá sa na hry Open Core. Vylepšenia a novinky, ktoré sa realizujú na úrovni vývojových komunit a nie na princípe vlastníctva, sú životaschopnejšie a zisťujú širšie rozšírenie, čo skvele súvisí s naším hlavným cieľom – spraviť softvér s otvoreným kódom užitočnejším pre našich zákazníkov.
- Politiky zabezpečenia pre pod’y (Pod Security Policies). Pôvodne bola táto koncepcia bezpečného vykonávania aplikácií vo vnútri pod’ov realizovaná v OpenShift pod názvom SCC (Security Context Constraints). A ako v predchádzajúcom príklade, Red Hat sa rozhodla implementovať tieto vývojové výstupy do otvoreného projektu Kubernetes, aby ich mohli využívať všetci záujemcovia.
Tento rad príkladov je možné pokračovať, ale chceli sme len ukázať, že Red Hat skutočne usiluje o rozvoj Kubernetes a zlepšovanie jeho funkčnosti pre všetkých.
Je jasné, že OpenShift je Kubernetes. A aké sú teda rozdiely? 🙂
Dúfame, že po prečítaní tohto miesta ste si uvedomili, že Kubernetes je hlavným komponentom OpenShift. Hlavným, ale zďaleka nie jediným. Inými slovami, len nainštalovaním Kubernetes nezískate podnikovej triedy platformu. Budete musieť pridať autentifikáciu, sieť, bezpečnosť, monitoring, správu protokolov a mnoho ďalšieho. Okrem toho budete musieť urobiť ťažký výber z množstva dostupných nástrojov (na posúdenie rôznorodosti ekosystému sa jednoducho pozrite ) a nejako zabezpečiť konzistenciu a súhru, aby pracovali ako celok. Okrem toho budete pravidelne musieť vykonávať aktualizácie a regresné testovanie pri vydaní novej verzie akéhokoľvek používaného komponentu. Teda okrem vybudovania a správy samotnej platformy sa budete musieť zaoberať aj všetkým týmto softvérom. ťažko tu zostane veľa času na riešenie obchodných úloh a dosiahnutie konkurenčných výhod.
V prípade OpenShift sa spoločnosť Red Hat postará o všetky tieto zložitosti a jednoducho vám poskytne funkčne ucelenú platformu, ktorá obsahuje nielen samotný Kubernetes, ale aj celú sadu potrebných nástrojov s otvoreným kódom, ktoré menia Kubernetes na skutočné riešenie podnikovej triedy, ktoré môžete okamžite a bez obáv nasadiť do produkcie. A samozrejme, ak máte nejaké svoje technologické stacky, môžete integrovať OpenShift do už existujúcich riešení.

Pozrite sa na obrázok vyššie: všetko, čo je mimo obdĺžnika Kubernetes, sú oblasti, kde Red Hat pridáva funkčnosť, ktorá v Kubernetes nie je, to sa nazýva, by-design. A teraz sa pozrieme na hlavné z týchto oblastí.
1. Spoľahlivý OS ako základ: RHEL CoreOS alebo RHEL
Red Hat je už viac ako 20 rokov popredným dodávateľom Linuxových distribúcií pre kriticky dôležité obchodné aplikácie. Naše dlhodobé a neustále aktualizované skúsenosti v tejto oblasti nám umožňujú ponúknuť skutočne spoľahlivý a dôveryhodný základ pre priemyselnú prevádzku kontajnerov. RHEL CoreOS používa to isté jadro ako RHEL, ale je optimalizované predovšetkým na úlohy ako spúšťanie kontajnerov a prevádzka v klastroch Kubernetes: jeho zmenšená veľkosť a nemennosť (immutability) zjednodušujú inštaláciu klastrov, automatické škálovanie, nasadenie opráv a pod. Všetky tieto funkcie ju robia ideálnym základom pre dosiahnutie rovnakého používateľského zážitku pri práci s OpenShift v rôznych výpočtových prostrediach, od „holého železa“ po súkromné a verejné cloudové služby.
2. Automatizácia IT operácií
Automatizácia procesov inštalácie a operácií druhého dňa (t.j. každodennej prevádzky) je silnou stránkou OpenShift, ktorá významne uľahčuje administráciu, aktualizáciu a zabezpečenie bezproblémovej prevádzky kontajnerovej platformy na najvyššej úrovni. To sa dosahuje podporou Kubernetes operátorov na úrovni jadra OpenShift 4.
OpenShift 4 je tiež celá ekosystém riešení založených na Kubernetes operátoroch, ktoré vyvinula samotná Red Hat, ako aj externí partneri (pozri Red Hat, alebo obchod s operátormi , ktorý vytvorila Red Hat pre externých vývojárov).

Integrovaný katalóg OpenShift 4 obsahuje viac ako 180 Kubernetes operátorov
3. Nástroje pre vývojárov
Od roku 2011 je OpenShift k dispozícii ako platforma PaaS (Platform-as-a-Service), ktorá významne zjednodušuje život vývojárom, umožňuje im sústrediť sa na písanie kódu a ponúka zabudovanú podporu pre programovacie jazyky ako Java, Node.js, PHP, Ruby, Python, Go, ako aj služby kontinuálnej integrácie a dodávky CI/CD, databázy a pod. OpenShift 4 ponúka , ktorý obsahuje viac ako 100 služieb založených na Kubernetes operátoroch, vyvinutých Red Hat a našimi partnermi.
Na rozdiel od Kubernetes, OpenShift 4 obsahuje špeciálne grafické rozhranie (), ktorý pomáha vývojárom jednoducho nasadzovať aplikácie z rôznych zdrojov (git, externé registry, Dockerfile atď.) vo svojich menách a prehľadne vizualizuje vzťahy medzi komponentmi aplikácie.

Okrem toho OpenShift ponúka súbor vývojových nástrojov Codeready, do ktorých patrí predovšetkým , plne kontajnerizované IDE s webovým rozhraním, ktoré funguje priamo nad OpenShift a implementuje prístup „IDE ako služba“. Na druhej strane, pre tých, ktorí chcú pracovať výlučne v lokálnom režime, sú tu Codeready Containers – plnofunkčná verzia OpenShift 4, ktorú je možné nasadiť na notebooku.

Integrované „IDE ako služba“ pre efektívny vývoj na platforme Kubernetes/OpenShift.
Priamo z krabice OpenShift ponúka plnohodnotný systém CI/CD, buď na báze kontajnerizovaného Jenkins a pluginu na prácu s pipeline, alebo orientovaný na Kubernetes CI/CD systém (prezentovaný zatiaľ v verzii Tech Preview). Obidve tieto riešenia sú plne integrované s konzolou OpenShift, umožňujúc spúšťanie spúšťačov pipeline, prezeranie nasadení, denníkov atď.
4. Nástroje pre aplikácie
OpenShift umožňuje nasadzovať ako tradičné stateful aplikácie, tak aj cloudovo orientované riešenia na základe nových architektúr, ako sú mikroslužby alebo serverless. Riešenie OpenShift Service Mesh priamo z krabice obsahuje kľúčové nástroje na podporu mikroslužieb, ako Istio, Kiali a Jaeger. Riešenie OpenShift Serverless na druhej strane zahŕňa nielen Knative, ale aj nástroje vytvorené v rámci spolupráce s Microsoftom, ako Keda na poskytovanie funkcií Azure na platforme OpenShift.

Integrované riešenie OpenShift ServiceMesh (Istio, Kiali, Jaeger) bude užitočné pri vývoji mikroslužieb.
Aby sa skrátila medzera medzi dedičnými aplikáciami a kontajnermi, OpenShift teraz umožňuje migrovať virtuálne stroje na platformu OpenShift pomocou Container Native Virtualization (prezentovaného zatiaľ v verzii Tech Preview), pričom sa hybridné aplikácie stávajú realitou a uľahčuje ich prenášanie medzi rôznymi cloudmi, ako sú privátne, tak aj verejné.

Windows 2019 Virtual stroj, spustený na OpenShift cez Container Native Virtualization (prezentovaný zatiaľ v verzii Tech Preview).
5. Nástroje pre klastre
Každá platforma podnikovej úrovne musí mať monitorovacie služby a centralizované správy protokolov, bezpečnostné mechanizmy, autentifikáciu a autorizáciu, ako aj nástroje pre správu siete. OpenShift to všetko poskytuje priamo, pričom ide o 100% otvorený kód, vrátane riešení ako ElasticSearch, Prometheus a Grafana. Všetky tieto riešenia prichádzajú s informačnými panelmi, metrikami a upozorneniami, ktoré sú už zložené a nastavené na základe rozsiahlych skúseností spoločnosti Red Hat v oblasti monitorovania klastrov, čo umožňuje efektívne sledovať a monitorovať vašu produkčnú infraštruktúru už od prvých minút.
OpenShift tiež štandardne obsahuje dôležité prvky pre podnikových zákazníkov, ako je autentifikácia so zabudovaným poskytovateľom oauth, integrácia s poskytovateľmi identít, vrátane LDAP, ActiveDirectory, OpenID Connect a mnohých ďalších.

Predkonfigurovaný informačný panel Grafana pre monitorovanie klastru OpenShift

Viac ako 150 predkonfigurovaných metrík a upozornení Prometheus pre monitorovanie klastru OpenShift
Pokračovanie nabudúce
Bohatá funkcionalita riešenia a rozsiahle skúsenosti spoločnosti Red Hat v oblasti Kubernetes sú presne tými dôvodmi, prečo OpenShift zaujíma dominantné postavenie na trhu, ako je znázornené na obrázku nižšie (viac informácií ).

„V súčasnosti Red Hat vedie na trhu s podielom 44%.”
Spoločnosť žne plody svojej predajnej stratégie, ktorá zahŕňa aktívne zapojenie do záležitostí zákazníka, v rámci ktorej najprv poskytuje poradenstvo a školenie podnikových vývojárov, a až potom prechádza k monetizácii, keď sa podnik začína presúvať k nasadzovaniu kontajnerov do produkcie.
(zdroj: )
Dúfame, že sa vám tento článok páčil. V nasledujúcich príspevkoch v tejto sérii sa podrobnejšie zameriame na výhody OpenShift v porovnaní s Kubernetes v každej z kategórií, ktoré sme tu prebrali.
Zdroj: habr.com
