âMis on Kubernetes ja OpenShift'i vahe?â â see kĂŒsimus tekib pidevalt. Tegelikult on see sama, mis kĂŒsida, mis vahe on autol ja selle mootoril. JĂ€tkates analoogiat, on auto valmis toode, millega saab kohe kasutama hakata: istud sisse ja sĂ”idad. Teisest kĂŒljest, et mootor viiks sind kuhugi, peab see olema tĂ€iendatud paljude teiste asjadega, et lĂ”puks saada sama auto.

SeetĂ”ttu on Kubernetes nagu mootor, mille ĂŒmber on kokku pandud auto (platvorm) OpenShift, mis viib sind eesmĂ€rgini.
Selles artiklis soovime meelde tuletada ja pisut pÔhjalikumalt kÀsitleda jÀrgmisi olulisi punkte:
- Kubernetes on OpenShift'i platvormi sĂŒda. Ja see on 100% sertifitseeritud Kubernetes, tĂ€ielikult avatud koodiga ja ilma vĂ€himagi eraviisilisuseta. LĂŒhidalt:
- OpenShift'i kluster API on 100% Kubernetes.
- Kui konteiner töötab mĂ”nes teises Kubernetes'i sĂŒsteemis, siis töötab see ilma muudatusteta ka OpenShift'is. Rakendustes muudatuste tegemine ei ole vajalik.
- OpenShift ei tĂ€ienda mitte ainult Kubernetes'e kasulike funktsioonidega ja vĂ”imalustega. Nagu auto, on OpenShift kohe kasutusvalmis â seda saab kohe rakendada tootmisesse, ja nagu me allpool nĂ€itame, lihtsustab see oluliselt arendaja elu. Just seetĂ”ttu on OpenShift kahel nĂ€ol: see on edukas ja laialdaselt tuntud PaaS-platvorm ettevĂ”tte tasemel arendajate jaoks, samuti super usaldusvÀÀrne Container-as-a-Service lahendus, kui vaadata tööstuslikust perspektiivist.
OpenShift on Kubernetes, millel on 100% sertifikaat CNCF fondist
OpenShifti aluseks on . SeetĂ”ttu imetlevad kasutajad pĂ€rast vastava vĂ€ljaĂ”ppe lĂ€bimist kubectl'i vĂ”imsust. Ja need, kes on OpenShift'i ĂŒle lĂ€inud Kubernetes Cluster'ilt, ĂŒtlevad sageli, kui vĂ€ga neile meeldib, et pĂ€rast kubeconfig'i suunamist OpenShifti klastrisse töötavad kĂ”ik olemasolevad skriptid laitmatult.
Olete tĂ”enĂ€oliselt kuulnud OpenShifti komandorealist utiliidist nimega OC. See on tĂ€iesti ĂŒhilduv kĂ€skudega kubectl ja pakub lisaks mitmeid kasulikke abilisi, mis tulevad kasuks paljude ĂŒlesannete tĂ€itmisel. Kuid kĂ”igepealt rÀÀgime natuke rohkem OC ja kubectl ĂŒhilduvusest:
kubectl kÀskude
OC kÀskude
kubectl get pods
oc get pods
kubectl get namespaces
oc get namespaces
kubectl create -f deployment.yaml
oc create -f deployment.yaml
Siin on, kuidas kubectl tulemused OpenShift API-lt vÀlja paistavad:
âą kubectl get pods â ilmselt tagastab podâid.

âą kubectl get namespaces â ilmselt tagastab nimesid.

KÀsk kubectl create -f mydeployment.yaml loob Kubernetes'i ressursse samamoodi nagu igal teisel Kubernetes platvormil, nagu on nÀidatud allpool videos:
TeisisĂ”nu, kĂ”ik Kubernetesâi API-d on OpenShiftis tĂ€ielikult saadaval, sĂ€ilitades 100% ĂŒhilduvust. Just sellepĂ€rast .â
OpenShift tÀiendab Kubernetes'i kasulike funktsioonidega.
Kubernetesi API-d on OpenShiftis 100% kĂ€ttevĂ”tlikud, kuid Kubernetesi seadme kubectl funktsionaalsus ja mugavus jĂ€tavad soovida. SeetĂ”ttu on Red Hat tĂ€iendanud Kubernetesit kasulike funktsioonide ja kĂ€surea tööriistadega, nagu OC (OpenShift kliendi lĂŒhend) ja ODO (OpenShift DO, see tööriist on mĂ”eldud arendajatele).
1. OC tööriist â vĂ”imsam ja mugavam variant Kubectl'ile
NÀiteks, erinevalt kubectl'ist, vÔimaldab see luua uusi nimiruumide ja hÔlpsalt konteksti vahetada, samuti pakub arendajatele mitmeid kasulikke kÀske, nÀiteks konteineripiltide koostamiseks ja rakenduste juurutamiseks otse lÀhtekoodist vÔi binaarfailidest (Source-to-image, s2i).
Vaatame nĂ€itlikult, kuidas sisseehitatud abivahendid ja OC tööriista tĂ€iendav funktsionaalsus aitavad igapĂ€evaseid ĂŒlesandeid lihtsustada.
Esimene nĂ€ide â nimede haldamine. Igas Kubernetes klasteris eksisteerib alati mitu nimeala. Need kasutatakse tavaliselt arendus- ja tootmis keskkondade loomiseks, kuid neid vĂ”ib kasutada ka nĂ€iteks iga arendaja isikliku "liiva" loomiseks. Praktiliselt tĂ€hendab see, et arendajal tuleb sageli vahetada nimealasid, kuna kubectl töötab praeguse nimeala kontekstis. SeetĂ”ttu kasutatakse kubectl-i puhul seda eesmĂ€rki saavutamiseks aktiivselt abiskripte. OC kasutamisel piisab soovitud nimealale ĂŒleminekuks lihtsalt öelda "oc project nimeala".
Kas te ei mĂ€leta, kuidas vajalik nimeala nimetatakse? Pole probleemi, lihtsalt sisestage "oc get projects", et kuvada tĂ€ielik nimealade loetelu. Kas te olete skeptiliselt huvitatud, kuidas see töötab, kui teil on juurdepÀÀs ainult piiratud alamehhanismide kogumile klastris? Noh, kuna kubectl teeb seda Ă”igesti vaid juhul, kui RBAC lubab teil nĂ€ha kĂ”iki nimealasid klastris, ja suurtes klastrites ei anta selliseid Ă”igusi sugugi kĂ”igile. Nii et vastame: OC jaoks pole see ĂŒldse probleem ja ta vĂ€ljastab sellises olukorras hĂ”lpsalt tĂ€ieliku nimealade loetelu. Sellistest pisiasjadest koosnebki Openshift'i ettevĂ”ttele orienteerituse ja selle platvormi hea skaleeritavus kasutajate ja rakenduste osas.
2. ODO â tĂ€iustatud versioon kubectl'ist arendajatele
Veel ĂŒhe nĂ€itena Red Hat OpenShift'i tĂ€iustustest vĂ”rreldes Kubernetes'ega vĂ”ib tuua kĂ€surea tööriista ODO. See on mĂ”eldud arendajatele ning vĂ”imaldab kiiresti juurutada paikset koodi kaug-OpenShift klastris. Lisaks vĂ”imaldab see optimeerida sisemisi protsesse, et koheselt sĂŒnkroonida kĂ”ik koodimuudatused konteineritega kaug-OpenShift klastris, ilma et oleks vaja uuesti ehitada, registreerida ja juurutada pilte.
Vaadakem, kuidas OC ja ODO lihtsustavad töötamist konteineritega ja Kubernetes'ega.
Lihtsalt vÔrdleme paari tööprotsessi, kui need pÔhinevad kubectl'il ja kui rakendatakse OC-d vÔi ODO-d.
âą Koodi juurutamine OpenShift'is neile, kes ei valda YAML keelt:
Kubernetes / kubectl
$> git clone
1- Loome Dockerfile'i, mis ehitab pildi koodist
âââââ
FROM node
WORKDIR /usr/src/app
COPY package*.json ./
COPY index.js ./
COPY ./app ./app
RUN npm install
EXPOSE 3000
CMD [ ânpmâ, âstartâ ]
âââââ
2- Ehita pilt
$> podman build âŠ
3- Logi sisse registrisse
podman login âŠ
4- Aseta pilt registrisse
podman push
5- Loome yaml-failid rakenduse juurutamiseks (deployment.yaml, service.yaml, ingress.yaml) â see on absoluutne miinimum.
6- Juurutame manifest-failid:
Kubectl apply -f .
OpenShift / oc
$> oc new-app â meie_rakenduse_nimi
OpenShift / odo
$> git clone
$> odo create component nodejs myapp
$> odo push
⹠Konteksti vahetamine: tööruumi nimete vÔi klastrisse vahetamine.
Kubernetes / kubectl
1- Loome konteksti kubeconfigis projekti âmyprojectâ jaoks
2- kubectl set-context âŠ
OpenShift / oc
oc project âmyprojectâ
Kvaliteedikontroll: âSiia tuli ĂŒks huvitav funktsioon, mis on praegu alfa-versioonis. Kas me toome selle tootmisse?â
Kujutage ette, et teid istutakse vĂ”idusĂ”idumasinasse ja öeldakse: âOleme paigaldanud uue tĂŒĂŒpi pidurid ja, ausalt öeldes, pole need veel tĂ€iesti usaldusvÀÀrsed⊠Aga Ă€rge muretsege, me töötame neid aktiivselt kogu meistrivĂ”istluste jooksul edasi.â Kuidas teile selline perspektiiv meeldib? Meile Red Hat'is ei meeldi see just eriti. đ
SeetĂ”ttu pĂŒĂŒame hoiduda alfa-versioonidest seni, kuni need pole piisavalt kĂŒpsed ja me ei ole lĂ€bi viinud pĂ”hjalikku lahingutesti ning tunnetanud, et neid on ohutu kasutada. Tavaliselt lĂ€bib kĂ”ik kĂ”igepealt Dev Preview etapi, seejĂ€rel ja ainult siis tuleb see vĂ€lja avaliku vĂ€ljaandena (GA), mis on juba nii stabiilne, et sobib tootmisse.
Miks nii? Sest nagu iga muu tarkvara arendamisel, ei jĂ”ua kĂ”ik esialgsed ideed Kuberneteses lĂ”puks vĂ€ljaande juurde. VĂ”i nad jĂ”uavad ning sĂ€ilitavad isegi kavandatud funktsionaalsuse, kuid nende rakendamine erineb radikaalselt sellest, mis oli alfa-versioonis. Kuna tuhanded ja tuhanded Red Hati kliendid kasutavad OpenShifti kriitiliste ĂŒlesannete toetamiseks, keskendume oma platvormi stabiilsusele ja pikaajalisele toele.
Red Hat vabastab sihikindlalt sagedased OpenShifti vĂ€ljaanded ja vĂ€rskendab selle koosseisu kuuluvat Kubernetes versiooni. NĂ€iteks on praeguses OpenShifti 4.3 GA-vĂ€ljaandes, mis kirjutamise ajal on, sisse ehitatud Kubernetes 1.16, mis on ĂŒks numbriga maas upstream-versioonist Kubernetes, mille numbriks on 1.17. Seega pĂŒĂŒame anda kliendile ettevĂ”tte tasemel Kubernetes ja tagada tĂ€iendav kvaliteedikontroll OpenShifti uute vĂ€ljaannete vĂ€ljalaskmisprotsessis.
Tarkvaraparandused: «Kuberneetes, mis meil tootmises on, on leidunud turvaauke. Ja neid saab kinni panna ainult kolmanda versiooni vÀrskendamisega. VÔi on olemas muid vÔimalusi?»
Avaallikaprojekti Kuberneetes raames vĂ€ljastatakse tarkvaraparandused tavaliselt jĂ€rgmise versiooni koosseisus, mĂ”nikord katab neid ĂŒks vĂ”i kaks eelmist vaheversiooni, mis annab katvuse kuni kuue kuu jooksul tagasi.
Red Hat on Ôigustatult uhke, et vÀljastab kriitilisi parandusi varem kui teised ning tagab toetuse palju pikema ajaperioodi jooksul. VÔtame nÀiteks Kuberneeteses tuvastatud privileegide eskaleerimise haavatavuse (): see avastati Kuberneetes 1.11-s, aga parandusi eelnevate versioonide jaoks vÀljastati kuni versioonini 1.10.11, jÀttes selle haavatavuse kÔikidesse eelnevatesse Kuberneetes versioonidesse, alates 1.x kuni 1.9.
Omalt poolt, (seal on Kuberneetes 1.2), hĂ”lmates ĂŒheksa OpenShifti versiooni ja demonstreerides selgelt hoolt klientide ĂŒle (lisainfot ).
Kuidas OpenShift ja Red Hat viivad Kuberneetes edasi
Red Hat on teisel kohal Kubernetesi avatud projekti programmistiku panustes, jÀÀdes alla ainult Google'ile, samas kui 3 5-st kĂ”ige viljakamatest arendajatest kuuluvad Red Hati. Veel ĂŒks vĂ€hetuntud fakt: paljud kriitilised funktsioonid tulid Kubernetesesse just Red Hati initsiatiivil, sealhulgas jĂ€rgmised:
- RBAC. Kuberneteses ei olnud RBAC (ClusterRole, ClusterRoleBinding) funktsioone, kuni Red Hati insenerid ei otsustanud need ellu viia platvormi osana, mitte eraldi OpenShifti lisafunktsiooni nĂ€ol. Kas Red Hat pelgab Kuberneteset tĂ€iustamast? Muidugi mitte, sest Red Hat jĂ€rgib rangelt avatud koodi pĂ”himĂ”tteid ja ei mĂ€ngi Open Core'i mĂ€nge. Parandused ja uuendused, mis rakendatakse arenduskogukonna tasandil, mitte omandiĂ”iguse alusel, muutuvad elujĂ”ulisemaks ja saavutavad laiemat levikut, mis sobib suurepĂ€raselt meie peamise eesmĂ€rgiga â muuta avatud lĂ€htekoodiga tarkvara meie klientide jaoks kasulikuks.
- Turvasekumate poliitikad pod'ides (Pod Security Policies). Alguses rakendati seda rakenduste turvalise tÀitmise kontseptsiooni pod'ides OpenShiftis nimega SCC (Security Context Constraints). Nagu eelnevas nÀites, otsustas Red Hat tuua need arendused avatud projekti Kubernetes, et neid saaks kasutada kÔik soovijad.
Seda nĂ€idete rida vĂ”iks jĂ€tkata, kuid tahtsime lihtsalt nĂ€idata, et Red Hat tĂ”eliselt pĂŒĂŒab arendada Kubernetesit ja muuta selle paremaks kĂ”igile.
Selge, OpenShift on Kubernetes. Aga milles on siis erinevused? đ
Loodame, et olete selle kohani jĂ”udnud ja mĂ”istnud, et Kubernetes on OpenShifti pĂ”hikomponent. PĂ”hikomponent, kuid kindlasti mitte ainus. TeisisĂ”nu, lihtsalt Kubernetesit installides ei saa te ettevĂ”tte klassi platvormi. Peate lisama autentimise, vĂ”rgu, turvalisuse, jĂ€lgimise, logihalduse ja palju muud. Lisaks tuleb teha keeruline valik paljusid saadaval olevate tööriistade vahel (kui soovite hinnata ökosĂŒsteemi mitmekesisust, vaadake lihtsalt ) ja tagada ĂŒhtsus ja koostöö, et nad töötaksid kui ĂŒks tervik. Lisaks peate regulaarselt teostama uuendusi ja regressioonitestimist, kui mĂ”ni kasutatav komponendi uus versioon vĂ€lja tuleb. See tĂ€hendab, et peale platvormi loomise ja hooldamise peate tegelema ka kogu selle tarkvaraga. Kahtlemata jÀÀb siin vĂ€hegi aega Ă€riĂŒlesannete lahendamiseks ja konkurentsieeliste saavutamiseks.
Ent OpenShift'i puhul vÔtab Red Hat kÔik need keerukused enda kanda ja pakub teile lihtsalt funktsionaalselt valmistoote platvormi, kuhu kuulub mitte ainult Kubernetes, vaid ka kÔik vajalikud avatud lÀhtekoodiga tööriistad, mis muudavad Kubernetes'i tÔeliseks ettevÔttetasandi lahenduseks, mida saab kohe ja muretult tootmisse kÀivitada. Ja muidugi, kui teil on oma tehnolooge, saate OpenShift'i integreerida olemasolevatesse lahendustesse.

Vaata ĂŒlaltoodud pilti: kĂ”ik, mis jÀÀb Kubernetes'i ristkĂŒliku vĂ€lja, on need valdkonnad, kuhu Red Hat lisab funktsionaalsust, mida Kubernetes'is ei ole, seda nimetatakse by-design. NĂŒĂŒd vaatame neid pĂ”hivaldkondi.
1. UsaldusvÀÀrne opsĂŒsteem aluseks: RHEL CoreOS vĂ”i RHEL
Red Hat on olnud enam kui 20 aastat juhtiv Linuxi jaotus kritilise Ă€ri rakenduste jaoks. Kogutud ja pidevalt uuendatud kogemus selles valdkonnas vĂ”imaldab meil pakkuda tĂ”eliselt usaldusvÀÀrset ja usaldusvÀÀrset alust konteinerite tootmiseks. RHEL CoreOS kasutab sama tuuma nagu RHEL, kuid on optimeeritud peamiselt selliste toimingute jaoks nagu konteinerite kĂ€itamine ja töö Kubernetes'i klastrites: selle vĂ€hendatud suurus ja muutumatud omadused lihtsustavad klastrite seadistamist, automaatset skaleerimist, paranduspakettide juurutamist jne. KĂ”ik need funktsioonid teevad sellest ideaalse aluse, et tagada sama kasutajakogemus OpenShiftis erinevates arvutuskeskkondades, alates âalusest rauastâ kuni eraisikute ja avalike pilvedeni.
2. IT-operatorsioonide automatiseerimine
Protsesside automatiseerimine paigaldamise ja teise pĂ€eva toimingute jaoks (st igapĂ€evase kasutamise) on OpenShifti tugevus, mis muudab konteinerite platvormi haldamise, uuendamise ja töö sĂ€ilitamise tunduvalt lihtsamaks. See saavutatakse OpenShift 4 sĂŒvakihis Kubernetes'i operaatorite toe kaudu.
OpenShift 4 on samuti terve Kubernetes'i operaatorite lahenduste ökosĂŒsteem, mida on vĂ€lja töötanud nii Red Hat ise kui ka kolmandate osapoolte partnerid (vt. Red Hat, vĂ”i operaatorite pood , mille on loonud Red Hat kolmandate osapoolte arendajatele).

OpenShift 4 integreeritud kataloog sisaldab ĂŒle 180 Kubernetes'i operaatori
3. Arendajate tööriistad
Alates 2011. aastast on OpenShift saadaval PaaS (Platform-as-a-Service) platvormina, mis muudab arendajate elu oluliselt lihtsamaks, aidates neil keskenduda koodi loomisele ning pakkudes sisseehitatud tuge sellistele programmeerimiskeeltedele nagu Java, Node.js, PHP, Ruby, Python, Go, ning teenuseid pidevaks integreerimiseks ja kohaletoimetamiseks CI/CD, andmebaasid jne. OpenShift 4 pakub , sisaldab rohkem kui 100 Red Hati ja meie partnerite vÀlja töötatud Kubernetes-i operaatoritel pÔhinevat teenust.
Erinevalt Kubernetesest on OpenShift 4-l spetsiaalne kasutajaliides (), mis aitab arendajatel hÔlpsalt juurutada oma nimepindades rakendusi erinevatest allikatest (git, vÀlistest registritest, Dockerfile jt) ning visuaalselt demonstreerida rakenduse komponentide vahelisi suhteid.

Lisaks pakub OpenShift arendustööriistade komplekti Codeready, kuhu kuulub muu hulgas , tĂ€ielikult konteineriseeritud veebiliidesega IDE, mis töötab otse OpenShiftil ja rakendab lĂ€henemist âIDE teenusenaâ. Teisest kĂŒljest, need, kes soovivad töötada rangelt lokaalses reĆŸiimis, saavad kasutada Codeready konteineri â tĂ€ielikult funktsionaalset OpenShift 4 versiooni, mida saab juurutada sĂŒlearvutisse.

Integreeritud âIDE teenusenaâ efektiivseks arendamiseks Kubernetes/OpenShift platvormil.
Otse vĂ€lja pakitud OpenShift pakub tĂ€ielikku CI/CD sĂŒsteemi, kas konteineriseeritud Jenkinsist ja pistikprogrammist torude haldamiseks vĂ”i Kubernetes-orienteeritud CI/CD sĂŒsteemiks (praegu Tehnilise eelvaate versioonis). MĂ”lemad lahendused integreeruvad tĂ€ielikult OpenShifti konsooliga, vĂ”imaldades kĂ€ivitada torude pÀÀstikud, vaadata juurutamisi, logisid jne.
4. Rakendustööriistad
OpenShift vÔimaldab juurutada nii traditsioonilisi stateful-rakendusi kui ka pilvepÔhiseid lahendusi, mis pÔhinevad uutel arhitektuuridel, nÀiteks mikroteenustel vÔi serverivabadel lahendustel. OpenShift Service Mesh lahendus tuleb kogumisse oluliste mikroteenuste hooldamiseks mÔeldud tööriistadega, nagu Istio, Kiali ja Jaeger. Samuti sisaldab OpenShift Serverless lahendus mitte ainult Knative'i, vaid ka Microsoftiga koostöös loodud tööriistu, nagu Keda, et tuua Azure'i funktsioone OpenShifti platvormile.

Integreeritud OpenShift ServiceMesh (Istio, Kiali, Jaeger) lahendus on kasulik mikroteenuste arendamisel
Kuna pĂ€randatud rakenduste ja konteinerite vahelise lĂ”he vĂ€hendamine, vĂ”imaldab OpenShift nĂŒĂŒd viia virtuaalmasinad OpenShift platvormile Container Native Virtualization'i abil (praegu TechPreview versioonis), muutes hĂŒbriidrakendused reaalsuseks ja lihtsustades nende liikumist erinevate pilvede vahel, nii privaatsete kui ka avalike.

Windows 2019 virtuaalmasin, mis töötab OpenShiftis Container Native Virtualization'i kaudu (praegu Tech Preview versioonis)
5. Tööriistad klastrite jaoks
Igal ettevÔtteklassil platvormil peavad olema jÀlgimise ja keskse logimise teenused, turvamehhanismid, autentimine ja autoriseerimine ning vÔrgu haldamise vahendid. OpenShift pakub seda kÔike standardlahendustena, olles 100% avatud koodiga, sealhulgas lahendusi nagu ElasticSearch, Prometheus ja Grafana. KÔik need lahendused tulevad koos informatiivsete paneelide, mÔÔdikute ja hÀiretega, mis on juba kokku pandud ja konfigureeritud, vÔttes arvesse Red Hati laialdast kogemust klastrite jÀlgimisel, vÔimaldades teie tootmiskeskkonna tÔhusat jÀlgimist ja kontrollimist alates esimestest minutidest.
OpenShift sisaldab ettevÔtetele olulisi funktsioone, nagu autentimine sisseehitatud oauth-teenusepakkuja kaudu, integreerimine identiteediteenusepakkujatega, sealhulgas LDAP, ActiveDirectory, OpenID Connect ja palju muud.

Eelseadistatud Grafana juhtpaneel OpenShift klastrite jÀlgimiseks

Rohkem kui 150 eelseadistatud Prometheuse mÔÔdikut ja teavitust OpenShift klastrite jÀlgimiseks
JĂ€tkub
Rikka funktsionaalsuse ja Red Hati ulatusliku kogemuse tÔttu Kuberneteses on OpenShift turul domineerival positsioonil, nagu nÀidatud alloleval joonisel (lisainfot ).

âPraegu on Red Hat turul 44% osakaaluga liider.
EttevĂ”te korjab vilja oma mĂŒĂŒgistrateegia tulemustest, milles ta esmalt nĂ”ustab ja koolitab ettevĂ”tte arendajaid ja seejĂ€rel liigub monetiseerimisele, kui ettevĂ”te hakkab konteinerite tootmisse tooma.â
(Allikas: )
Loodame, et teile meeldis see artikkel. JĂ€rgmistes postitustes selles seerias vaatame lĂ€hemalt OpenShiftâi eeliseid Kubernetesâe ees igas kĂ€sitletud kategoorias.
Allikas: habr.com
