OpenShift kao poslovna verzija Kubernetesa. 1. dio

"Koja je razlika između Kubernetesa i OpenShifta?" – postavlja se ovo pitanje sa zavidnom dosljednošću. Iako je to u stvarnosti kao da pitate po čemu se auto razlikuje od motora. Ako nastavimo analogiju, onda je automobil gotov proizvod, možete ga koristiti odmah, doslovno: uđite i krenite. S druge strane, da bi te neki motor negdje odveo, mora se prvo nadopuniti s puno drugih stvari da bi se u konačnici dobio isti auto.

OpenShift kao poslovna verzija Kubernetesa. 1. dio

Dakle, Kubernetes je motor oko kojeg je sastavljen automobil (platforma) marke OpenShift koji vas vodi do vašeg cilja.

U ovom članku želimo vas podsjetiti i malo detaljnije ispitati sljedeće ključne točke:

  • Kubernetes je srce OpenShift platforme i to je 100% certificirani Kubernetes, potpuno otvorenog koda i bez imalo vlasničke prirode. Kratko:
    • API klastera OpenShift je XNUMX% Kubernetes.
    • Ako spremnik radi na bilo kojem drugom sustavu Kubernetes, tada će se izvoditi na OpenShiftu bez ikakvih promjena. Nema potrebe mijenjati aplikacije.
  • OpenShift ne samo da dodaje korisne značajke i funkcionalnost Kubernetesu. Kao i automobil, OpenShift je izvan kutije, može se odmah staviti u proizvodnju i, kao što ćemo pokazati u nastavku, čini život programera puno lakšim. Zato je OpenShift ujedinjen u dvije osobe. To je i uspješna i dobro poznata PaaS platforma poslovne klase iz perspektive programera. U isto vrijeme, to je super-pouzdano rješenje kontejnera kao usluge sa stajališta industrijskog rada.

OpenShift je Kubernetes sa 100% CNCF certifikatom

OpenShift se temelji na Kubernetes certificiran. Stoga, nakon odgovarajuće obuke, korisnici su zadivljeni snagom kubectla. A oni koji su prešli na OpenShift s Kubernetes klastera često kažu kako im se jako sviđa što nakon preusmjeravanja kubeconfiga na OpenShift klaster sve postojeće skripte rade besprijekorno.

Vjerojatno ste čuli za OpenShiftov pomoćni program naredbenog retka koji se zove OC. U potpunosti je kompatibilan s naredbama s kubectl, plus nudi nekoliko korisnih pomoćnika koji će vam dobro doći pri obavljanju niza zadataka. Ali prvo, nešto više o kompatibilnosti OC-a i kubectla:

kubectl naredbe
OC timovi

kubectl dobiti pods
oc dobiti mahune

kubectl dobiti prostore imena
oc dobiti prostore imena

kubectl create -f deployment.yaml
oc stvoriti -f implementacija.yaml

Evo kako izgledaju rezultati korištenja kubectla na OpenShift API-ju:

• kubectl get pods – vraća pods prema očekivanjima.

OpenShift kao poslovna verzija Kubernetesa. 1. dio

• kubectl get namespaces – vraća imenske prostore prema očekivanjima.

OpenShift kao poslovna verzija Kubernetesa. 1. dio
Naredba kubectl create -f mydeployment.yaml stvara kubernetes resurse baš kao na bilo kojoj drugoj Kubernetes platformi, kao što je prikazano u videu ispod:


Drugim riječima, svi Kubernetes API-ji u potpunosti su dostupni u OpenShiftu uz zadržavanje 100% kompatibilnosti. Iz tog razloga OpenShift je priznat kao certificirana Kubernetes platforma od strane Cloud Native Computing Foundation (CNCF). 

OpenShift dodaje korisne značajke Kubernetesu

Kubernetes API-ji su 100% dostupni u OpenShiftu, ali standardnom Kubernetes uslužnom programu kubectl očito nedostaje funkcionalnost i praktičnost. Zato je Red Hat Kubernetesu dodao korisne značajke i alate naredbenog retka, kao što su OC (skraćenica za OpenShift klijent) i ODO (OpenShift DO, ovaj uslužni program namijenjen je programerima).

1. OC uslužni program - moćnija i praktičnija verzija Kubectla

Na primjer, za razliku od kubectl-a, omogućuje vam stvaranje novih imenskih prostora i jednostavno mijenjanje konteksta, a također nudi niz korisnih naredbi za programere, kao što je izrada slika spremnika i implementacija aplikacija izravno iz izvornog koda ili binarnih datoteka (izvor-na-sliku, s2i).

Pogledajmo primjere kako ugrađeni pomagači i napredna funkcionalnost uslužnog programa OC pomažu pojednostaviti svakodnevni rad.

Prvi primjer je upravljanje imenskim prostorom. Svaki Kubernetes klaster uvijek ima više imenskih prostora. Obično se koriste za stvaranje razvojnih i proizvodnih okruženja, ali se također mogu koristiti za, na primjer, pružanje svakom programeru osobnog sandboxa. U praksi to rezultira time da se programer mora često prebacivati ​​između prostora imena, budući da kubectl radi u kontekstu trenutnog prostora. Stoga, u slučaju kubectla, ljudi aktivno koriste pomoćne skripte za to. Ali kada koristite OC, da biste se prebacili na željeni prostor, samo recite "oc project namespace".

Ne sjećate se kako se zove imenski prostor koji vam je potreban? Nema problema, samo upišite "oc get projects" za prikaz cijelog popisa. Skeptični se pitate kako će to funkcionirati ako imate pristup samo ograničenom podskupu prostora imena na klasteru? Pa, zato što kubectl ovo radi ispravno samo ako vam RBAC dopušta da vidite sve prostore na klasteru, a u velikim klasterima nemaju svi takve dozvole. Dakle, odgovaramo: za OC to uopće nije problem i on će u takvoj situaciji lako izraditi potpuni popis. Upravo te male stvari čine korporativnu orijentaciju Openshifta i dobru skalabilnost ove platforme u smislu korisnika i aplikacija

2. ODO - poboljšana verzija kubectla za programere

Još jedan primjer poboljšanja Red Hat OpenShift-a u odnosu na Kubernetes je uslužni program ODO naredbenog retka. Dizajniran je za programere i omogućuje vam brzu implementaciju lokalnog koda na udaljeni OpenShift klaster. Također može pojednostaviti interne procese za trenutnu sinkronizaciju svih promjena koda u spremnike na udaljenom OpenShift klasteru bez potrebe za ponovnom izgradnjom, registracijom i ponovnim postavljanjem slika.

Pogledajmo kako OC i ODO olakšavaju rad s kontejnerima i Kubernetesom.

Usporedite samo nekoliko tokova rada kada su izgrađeni na temelju kubectla i kada se koriste OC ili ODO.

• Implementacija koda na OpenShiftu za one koji ne govore YAML:

Kubernetes / kubectl
$>git klon github.com/sclorg/nodejs-ex.git
1- Napravite Dockerfile koji gradi sliku iz koda
-----
FROM čvor
RADNI DIR /usr/src/app
KOPIRAJ paket*.json ./
KOPIRAJ index.js ./
KOPIRAJ ./app ./app
POKRENI npm instalaciju
IZLOŽENOST 3000
CMD [ “npm”, “start” ] ————–
2- Gradimo imidž
$>podman build...
3- Prijavite se u registar
podman prijava...
4- Postavite sliku u registar
podman gurati
5- Stvorite yaml datoteke za implementaciju aplikacije (deployment.yaml, service.yaml, ingress.yaml) - ovo je apsolutni minimum
6- Implementirajte datoteke manifesta:
Kubectl primijeniti -f .

OpenShift/oc
$> oc nova aplikacija github.com/sclorg/nodejs-ex.git – naziv_naše_aplikacije

OpenShift/odo
$>git klon github.com/sclorg/nodejs-ex.git
$> odo stvori komponentu nodejs myapp
$>odo guranje

• Promjena konteksta: promijenite radni prostor imena ili radni klaster.

Kubernetes / kubectl
1- Stvorite kontekst u kubeconfig za projekt “myproject”
2- kubectl set-context…

OpenShift/oc
oc projekt “mojprojekt”

Kontrola kvalitete: “Ovdje se pojavila jedna zanimljiva značajka, još uvijek u alfa verziji. Možda ga možemo staviti u proizvodnju?”

Zamislite da sjedite u trkaćem automobilu i da vam kažu: "Ugradili smo novu vrstu kočnica i, da budem iskren, njihova pouzdanost još nije u redu... Ali ne brinite, aktivno ćemo ih poboljšavati tijekom tečaja prvenstva.” Kako vam se sviđa ova perspektiva? Mi u Red Hatu nekako nismo baš sretni. 🙂

Stoga pokušavamo odgoditi alfa verzije dok ne budu dovoljno zrele i dok ne obavimo temeljito testiranje u borbi i smatramo da su sigurne za upotrebu. Obično sve prvo prolazi kroz fazu Dev Preview, a zatim kroz Tehnički pregled i tek onda izlazi kao javna objava Opća dostupnost (GA), koji je već toliko stabilan da je pogodan za proizvodnju.

Zašto je to? Jer, kao i kod razvoja bilo kojeg drugog softvera, sve početne ideje u Kubernetesu ne dolaze do konačnog izdanja. Ili ga dosegnu i čak zadrže predviđenu funkcionalnost, ali im se implementacija radikalno razlikuje od one u alfa verziji. Uz tisuće i tisuće korisnika Red Hata koji koriste OpenShift za podršku kritičnim radnim opterećenjima, poseban naglasak stavljamo na stabilnost naše platforme i dugoročnu podršku.

Red Hat je predan čestom izdavanju OpenShifta i ažuriranju verzije Kubernetesa koja dolazi s njim. Na primjer, trenutno GA izdanje OpenShift 4.3 u vrijeme pisanja ovog teksta uključuje Kubernetes 1.16, koji je samo jednu jedinicu iza gornje verzije Kubernetesa pod brojem 1.17. Stoga nastojimo klijentu pružiti Kubernetes poslovne klase i osigurati dodatnu kontrolu kvalitete dok izdajemo nove verzije OpenShifta.

Softverski popravci: “Postojala je rupa u verziji Kubernetesa koju imamo u proizvodnji. I možete ga zatvoriti samo ažuriranjem tri verzije. Ili postoje neke opcije?

U projektu otvorenog koda Kubernetes, softverski popravci obično se objavljuju kao dio sljedećeg izdanja, ponekad pokrivajući jedno ili dva prethodna izdanja, dajući pokrivenost za samo 6 mjeseci.

Red Hat se ponosi objavljivanjem kritičnih popravaka ranije od ostalih i pružanjem podrške mnogo dulje. Uzmimo za primjer ranjivost Kubernetes eskalacije privilegija (CVE-2018-1002105): otkriven je u Kubernetesu 1.11, a popravci za prethodna izdanja objavljeni su samo do verzije 1.10.11, ostavljajući ovaj u rupi u svim prethodnim izdanjima Kubernetesa, od 1.x do 1.9.

S druge strane, Red Hat je vratio OpenShift na verziju 3.2 (Kubernetes 1.2 je tu), snimajući devet OpenShift izdanja i jasno pokazujući brigu za korisnike (više detalja здесь).

Kako OpenShift i Red Hat pokreću Kubernetes naprijed

Red Hat je drugi najveći softverski doprinos projektu Kubernetes otvorenog koda, iza samo Googlea, s 3 od 5 najplodnijih programera koji dolaze iz Red Hata. Još jedna malo poznata činjenica: mnoge kritične funkcije pojavile su se u Kubernetesu upravo na inicijativu Red Hata, posebice, kao što su:

  • RBAC. Kubernetes nije imao RBAC funkcije (ClusterRole, ClusterRoleBinding) sve dok ih inženjeri Red Hata nisu odlučili implementirati kao dio same platforme, a ne kao dodatnu OpenShift funkcionalnost. Boji li se Red Hat poboljšati Kubernetes? Naravno da ne, jer Red Hat striktno slijedi načela otvorenog koda i ne igra Open Core igre. Poboljšanja i inovacije koje pokreću razvojne zajednice, a ne one vlasničke, održivije su i šire prihvaćene, što je u skladu s našim temeljnim ciljem da softver otvorenog koda učinimo korisnijim našim klijentima.
  • Sigurnosna pravila za mahune (Pod Security Policies). Ovaj koncept sigurnog pokretanja aplikacija unutar mahuna izvorno je implementiran u OpenShiftu pod nazivom SCC (Security Context Constraints). I kao u prethodnom primjeru, Red Hat je odlučio uvesti ove razvoje u otvoreni Kubernetes projekt kako bi ih svi mogli koristiti.

Ovaj niz primjera mogao bi se nastaviti, ali samo smo htjeli pokazati da je Red Hat stvarno predan razvoju Kubernetesa i da ga učini boljim za sve.

Jasno je da je OpenShift Kubernetes. Koje su razlike? 🙂

Nadamo se da ste čitanjem do sada shvatili da je Kubernetes ključna komponenta OpenShift-a. Glavni, ali daleko od jedinog. Drugim riječima, jednostavno instaliranje Kubernetesa neće vam dati platformu poslovne klase. Morat ćete dodati autentifikaciju, umrežavanje, sigurnost, nadzor, upravljanje zapisima i više. Osim toga, morat ćete napraviti neke teške odluke iz velikog broja dostupnih alata (da biste cijenili raznolikost ekosustava, samo pogledajte CNCF grafikon) i nekako osigurati dosljednost i koherentnost tako da rade kao jedno. Osim toga, redovito ćete morati provoditi ažuriranja i regresijsko testiranje kad god se objavi nova verzija bilo koje od komponenti koje koristite. Odnosno, osim izrade i održavanja same platforme, morat ćete se pozabaviti i svim tim softverom. Malo je vjerojatno da će ostati puno vremena za rješavanje poslovnih problema i postizanje konkurentskih prednosti.

Ali u slučaju OpenShift-a, Red Hat preuzima sve te složenosti na sebe i jednostavno vam daje funkcionalno cjelovitu platformu, koja uključuje ne samo sam Kubernetes, već i cijeli skup potrebnih alata otvorenog koda koji Kubernetes pretvaraju u pravu poduzeću. rješenje koje možete odmah i potpuno mirno pustiti u proizvodnju. I naravno, ako imate neke svoje vlastite tehnološke skupove, tada možete integrirati OpenShift u postojeća rješenja.

OpenShift kao poslovna verzija Kubernetesa. 1. dio
OpenShift je pametna Kubernetes platforma

Pogledajte gornju sliku: sve što je izvan Kubernetes pravokutnika je mjesto gdje Red Hat dodaje funkcionalnost koju Kubernetes nema, kako kažu, po dizajnu. A sada ćemo pogledati glavna od ovih područja.

1. Robusni OS kao baza: RHEL CoreOS ili RHEL

Red Hat je vodeći pružatelj distribucija Linuxa za poslovne aplikacije već više od 20 godina. Naše akumulirano i stalno ažurirano iskustvo u ovom području omogućuje nam da ponudimo istinski pouzdanu i pouzdanu osnovu za industrijski rad kontejnera. RHEL CoreOS koristi istu jezgru kao RHEL, ali je optimiziran prvenstveno za zadatke kao što su pokretanje spremnika i pokretanje Kubernetes klastera: njegova smanjena veličina i nepromjenjivost olakšavaju postavljanje klastera, automatsko skaliranje, postavljanje zakrpa itd. Sve te značajke čine idealan temelj za pružanje istog korisničkog iskustva s OpenShift-om u širokom rasponu računalnih okruženja, od golog metala do privatnog i javnog oblaka.

2. Automatizacija IT operacija

Automatizacija instalacijskih procesa i operacija dan-4 (to jest, svakodnevne operacije) je jaka strana OpenShift-a, što olakšava administraciju, ažuriranje i održavanje performansi kontejnerske platforme na najvišoj razini. To se postiže podrškom za Kubernetes operatore na razini jezgre OpenShift XNUMX.

OpenShift 4 također je cijeli ekosustav rješenja temeljen na Kubernetes operatorima, razvijen od strane samog Red Hata i partnera trećih strana (vidi. imenik operatera Red Hat ili trgovina operatera operatorhub.io, stvorio Red Hat za programere trećih strana).

OpenShift kao poslovna verzija Kubernetesa. 1. dio
Integrirani OpenShift 4 katalog uključuje više od 180 Kubernetes operatora

3. Alati za razvojne programere

Od 2011. OpenShift je dostupan kao platforma PaaS (Platform-as-a-Service) koja uvelike olakšava život programerima, pomaže im da se usredotoče na kodiranje i nudi izvornu podršku za programske jezike kao što su Java, Node.js , PHP, Ruby, Python, Go, kao i usluge kontinuirane integracije i isporuke CI/CD, baze podataka itd. OpenShift 4 nudi opsežan katalog, koji uključuje više od 100 usluga temeljenih na Kubernetes operatorima koje su razvili Red Hat i naši partneri.

Za razliku od Kubernetesa, OpenShift 4 ima namjenski GUI (Konzola za razvojne programere), koji pomaže razvojnim programerima da bez napora implementiraju aplikacije iz različitih izvora (git, vanjski registri, Dockerfile, itd.) u svoje imenske prostore i jasno vizualiziraju odnose između komponenti aplikacije.

OpenShift kao poslovna verzija Kubernetesa. 1. dio
Developer Console pruža jasan pregled komponenti aplikacije i olakšava rad s Kubernetesom

Osim toga, OpenShift nudi skup alata za razvoj Codeready, koji posebno uključuje Radni prostori spremni za kodiranje, potpuno kontejnerski IDE s web sučeljem koje radi izravno na OpenShiftu i implementira pristup IDE-as-a-service. S druge strane, za one koji žele raditi isključivo u lokalnom načinu rada, tu su Codeready Containers, potpuno funkcionalna verzija OpenShift 4 koja se može postaviti na prijenosno računalo.

OpenShift kao poslovna verzija Kubernetesa. 1. dio
Integrirani IDE kao servis za učinkovit razvoj na Kubernetes/OpenShift platformi

OpenShift nudi potpuni CI/CD sustav odmah po vađenju iz kutije, bilo temeljen na kontejnerskom Jenkinsu i dodatku DSL za rad s cjevovodima ili CI/CD sustavom orijentiranim na Kubernetes Tekton (trenutačno u verziji tehničkog pregleda). Oba ova rješenja u potpunosti se integriraju s OpenShift konzolom, omogućujući vam pokretanje okidača cjevovoda, pregled implementacija, zapisa i više.

4. Alati za primjenu

OpenShift vam omogućuje implementaciju tradicionalnih aplikacija s praćenjem stanja i rješenja temeljenih na oblaku temeljenih na novim arhitekturama, kao što su mikroservisi ili serverless. Rješenje OpenShift Service Mesh dolazi odmah iz kutije s ključnim alatima za održavanje mikroservisa, kao što su Istio, Kiali i Jaeger. Zauzvrat, OpenShift Serverless rješenje uključuje ne samo Knative, već i alate poput Kede stvorene kao dio zajedničke inicijative s Microsoftom za pružanje Azure funkcija na OpenShift platformi.

OpenShift kao poslovna verzija Kubernetesa. 1. dio
Integrirano rješenje OpenShift ServiceMesh (Istio, Kiali, Jaeger) bit će korisno pri razvoju mikroservisa

Kako bi se premostio jaz između naslijeđenih aplikacija i spremnika, OpenShift sada omogućuje migraciju virtualnog stroja na platformu OpenShift pomoću izvorne virtualizacije spremnika (trenutačno u TechPreviewu), čineći hibridne aplikacije stvarnošću i olakšavajući njihovu migraciju između različitih oblaka, privatnih i javnih.

OpenShift kao poslovna verzija Kubernetesa. 1. dio
Windows 2019 Virtualni virtualni stroj koji radi na OpenShiftu putem izvorne virtualizacije spremnika (trenutačno u verziji tehničkog pregleda)

5. Alati za klastere

Svaka platforma poslovne klase mora imati usluge nadzora i centraliziranog zapisivanja, sigurnosne mehanizme, autentifikaciju i autorizaciju te alate za upravljanje mrežom. I OpenShift pruža sve to iz kutije, i sve je to 100% open source, uključujući rješenja kao što su ElasticSearch, Prometheus, Grafana. Sva ova rješenja dolaze s nadzornim pločama, metrikama i upozorenjima koja su već izgrađena i konfigurirana korištenjem opsežne Red Hatove stručnosti u praćenju klastera, što vam omogućuje da učinkovito kontrolirate i nadzirete svoje proizvodno okruženje od samog početka.

OpenShift također standardno dolazi s tako važnim stvarima za korporativne korisnike kao što je autentifikacija s ugrađenim oauth providerom, integracija s pružateljima vjerodajnica, uključujući LDAP, ActiveDirectory, OpenID Connect i još mnogo toga.

OpenShift kao poslovna verzija Kubernetesa. 1. dio
Unaprijed konfigurirana nadzorna ploča Grafana za nadzor OpenShift klastera

OpenShift kao poslovna verzija Kubernetesa. 1. dio
Preko 150 unaprijed konfiguriranih Prometheus metrika i upozorenja za nadgledanje OpenShift klastera

Da bi se nastavila

Bogata funkcionalnost rješenja i veliko iskustvo Red Hata na području Kubernetesa razlozi su zašto je OpenShift postigao dominantnu poziciju na tržištu, kao što je prikazano na slici ispod (pročitajte više здесь).

OpenShift kao poslovna verzija Kubernetesa. 1. dio
“Red Hat trenutno vodi na tržištu s udjelom od 44%.
Tvrtka ubire prednosti svoje prodajne strategije usmjerene na kupca, gdje prvo konzultira i obučava razvojne programere poduzeća, a zatim prelazi na monetizaciju kada poduzeće počne uvoditi spremnike u proizvodnju.”

(Izvor: www.lightreading.com/nfv/containers/ihs-red-hat-container-strategy-is-paying-off/d/d-id/753863)

Nadamo se da ste uživali u ovom članku. U budućim postovima u ovoj seriji pobliže ćemo pogledati prednosti OpenShift-a u odnosu na Kubernetes u svakoj od ovdje raspravljanih kategorija.

Izvor: www.habr.com

Dodajte komentar