Ndine urombo, OpenShift, hatina kukutendai zvakakwana uye takakutorerai

Iyi posvo yakanyorwa nekuti vashandi vedu vaive nehurukuro dzakati wandei nevatengi nezve kugadzira zvikumbiro paKubernetes uye neruzivo rwekusimudzira kwakadaro paOpenShift.

Ndine urombo, OpenShift, hatina kukutendai zvakakwana uye takakutorerai

Isu tinowanzo tanga neiyo thesis yekuti Kubernetes ingori Kubernetes, uye OpenShift yatove Kubernetes chikuva, seMicrosoft AKS kana Amazon EKS. Imwe neimwe yemapuratifomu aya ine zvayakanakira, inotariswa pane imwe chinangwa chevateereri. Uye mushure meizvozvo, hurukuro inotoyerera mukuenzanisa kwesimba uye kushaya simba kwezvirongwa zvakananga.

Kazhinji, takafunga kunyora chinyorwa ichi chine chinobuda se "Teerera, hazvina basa kuti unomhanyisa kodhi, paOpenShift kana paAKS, paEKS, pane imwe tsika Kubernetes, hongu pane chero Kubernetes. (ngatitii KUK muchidimbu) "Zviri nyore chaizvo, zvese uko uye uko."

Ipapo takaronga kutora yakapusa "Mhoro Nyika" toishandisa kuratidza izvo zvakajairika uye ndeupi musiyano uripo pakati peCMC neRed Hat OpenShift Container Platform (pano, OCP kana kungoti OpenShift).

Nekudaro, mukufamba kwekunyora iyi positi, takaona kuti isu tajaira kushandisa OpenShift zvekuti isu hatisi kuona kuti yakakura sei uye yakashanduka kuita chikuva chinoshamisa chave chinopfuura kungogovera Kubernetes. Isu tinowanzo kutora kukura uye kureruka kweOpenShift sezvisina basa, tichitarisa hukuru hwayo.

Kazhinji, nguva yasvika yekutendeuka kwakasimba, uye ikozvino ticha nhanho nhanho tichienzanisa kutumwa kwe "Mhoro Nyika" yedu paKUK uye paOpenShift, uye isu tichazviita nenzira kwayo sezvazvinogona (zvakanaka, kunze kwedzimwe nguva kuratidza mafungiro kune nyaya). Kana iwe uchifarira maonero akachena panyaya iyi, unogona kuiverenga pano (EN). Uye mune ino positi isu tinonamatira kune chokwadi uye chete chokwadi.

Masumbu

Saka, yedu "Mhoro Nyika" inoda masumbu. Ngatingoti "kwete" kune chero makore eruzhinji, kuitira kuti usabhadhara maseva, registries, network, kuendesa data, nezvimwe. Saizvozvo, isu tinosarudza iri nyore-node cluster pa Minikube (yeKUK) uye Code Yakagadzirira Midziyo (yeOpenShift cluster). Idzi sarudzo dzese dziri nyore kuisa, asi dzinoda zviwanikwa zvakawanda palaptop yako.

Ndine urombo, OpenShift, hatina kukutendai zvakakwana uye takakutorerai

Gungano paKUK-e

Saka handei.

Nhanho 1 - Kuvaka Yedu Yemuhari mufananidzo

Ngatitangei nekuendesa yedu "Mhoro Nyika" kune minikube. Izvi zvinoda:

  1. 1. Yakaiswa Docker.
  2. 2. Yakaiswa Git.
  3. 3. Yakaiswa Maven (chaizvoizvo, chirongwa ichi chinoshandisa mvnw binary, saka iwe unogona kuita pasina iyo).
  4. 4. Chaizvoizvo, tsime pacharo, i.e. repository clone github.com/gcolman/quarkus-hello-world.git

Nhanho yekutanga kugadzira chirongwa cheQuarkus. Usatya kana usati wamboshandisa Quarkus.io - zviri nyore. Iwe unongosarudza zvikamu zvaunoda kushandisa mupurojekiti (RestEasy, Hibernate, Amazon SQS, Camel, etc.), uye ipapo Quarkus pachayo, pasina chero kutora kwako kutora chikamu, inomisa maven archetype uye inoisa zvese pagithub. Kureva kuti, kudzvanya kamwe chete kwegonzo - uye wapedza. Ichi ndicho chikonzero tinoda Quarkus.

Ndine urombo, OpenShift, hatina kukutendai zvakakwana uye takakutorerai

Nzira iri nyore yekuvaka yedu "Mhoro Nyika" mumufananidzo wakaiswa mumidziyo ndeyekushandisa iyo quarkus-maven yekuwedzera yeDocker, iyo ichaita basa rese rinodiwa. Nekuuya kweQuarkus, izvi zvave nyore uye zviri nyore: wedzera mudziyo-mufananidzo-docker yekuwedzera uye unogona kugadzira mifananidzo ine maven mirairo.

./mvnw quarkus:add-extension -Dextensions=”container-image-docker”

Uye pakupedzisira, isu tinovaka chifananidzo chedu tichishandisa Maven. Nekuda kweizvozvo, yedu sosi kodhi inoshanduka kuita yakagadzirira-yakagadzirwa mudziyo mufananidzo, unogona kutomhanyiswa mumudziyo wekumhanya.

Ndine urombo, OpenShift, hatina kukutendai zvakakwana uye takakutorerai

./mvnw -X clean package -Dquarkus.container-image.build=true

Izvo, muchokwadi, ndizvo zvese, ikozvino unogona kumhanyisa mudziyo neiyo docker run command, watora mepu yedu sevhisi kuchiteshi 8080 kuti iwanikwe.

docker run -i β€” rm -p 8080:8080 gcolman/quarkus-hello-world

Ndine urombo, OpenShift, hatina kukutendai zvakakwana uye takakutorerai

Mushure mekunge mudziyo wemidziyo watanga, chasara kutarisa necurl command kuti sevhisi yedu iri kushanda:

Ndine urombo, OpenShift, hatina kukutendai zvakakwana uye takakutorerai

Saka, zvese zvinoshanda, uye zvaive nyore chaizvo uye zviri nyore.

Nhanho 2 - Tumira mudziyo wedu kune mudziyo wemifananidzo repository

Parizvino, mufananidzo watakagadzira unochengetwa munharaunda munzvimbo yedu yekuchengetedza midziyo. Kana isu tichida kushandisa mufananidzo uyu munharaunda yedu yeKUK, saka tinoda kuiisa mune imwe nzvimbo yekuchengetera. Kubernetes haina aya maficha, saka isu tichashandisa dockerhub. Nekuti, chekutanga, ndeyemahara, uye chechipiri, (inenge) munhu wese anozviita.

Izvi zvakare zviri nyore, uye chete dockerhub account inodiwa pano.

Saka, isu tinoisa dockerhub uye tinotumira mufananidzo wedu ipapo.

Ndine urombo, OpenShift, hatina kukutendai zvakakwana uye takakutorerai

Nhanho 3 - Tanga Kubernetes

Pane nzira dzakawanda dzekuisa pamwe kubernetes kumisikidzwa kumhanyisa yedu "Mhoro Nyika", asi isu tichashandisa yakapusa yadzo, nekuti isu tiri vanhu vakadaro ...

Kutanga, isu tinotanga iyo minikube cluster:

minikube start

Nhanho 4 - Kuendesa Yedu Container Mufananidzo

Ikozvino isu tinoda kushandura kodhi yedu uye mudziyo mufananidzo kubernetes kumisikidzwa. Mune mamwe mazwi, isu tinoda pod uye deployment tsananguro inonongedzera kune yedu mudziyo mufananidzo pane dockerhub. Imwe yedzakareruka nzira dzekuita izvi ndeyekumhanyisa gadzira deployment command inonongedza kumufananidzo wedu:

Ndine urombo, OpenShift, hatina kukutendai zvakakwana uye takakutorerai

kubectl create deployment hello-quarkus β€” image =gcolman/quarkus-hello-world:1.0.0-SNAPSHOT

Nemurairo uyu, takaudza COOK yedu kuti igadzire dhizaini yekumisikidza, iyo inofanirwa kunge iine iyo pod yakatarwa yemufananidzo wemidziyo yedu. Uyu murairo unozoshandisawo iyi gadziriso kune yedu minikube cluster, uye gadzira deployment iyo inodhawunirodha yedu mudziyo mufananidzo uye kumhanya pod pasumbu.

Nhanho 5 - vhura mukana webasa redu

Zvino zvatava nemufananidzo wemudziyo wakaiswa, yave nguva yekufunga nezve maitiro ekugadzirisa ekunze kupinda kune iyi Restful sevhisi, iyo, muchokwadi, yakarongwa mukodhi yedu.

Pane nzira dzakawanda pano. Semuenzaniso, unogona kushandisa iyo expose command kuti ugadzire otomatiki akakodzera Kubernetes zvikamu zvakaita sevhisi uye magumo. Chaizvoizvo, izvi ndizvo zvatichaita nekuita murairo wekufumura wechinhu chedu chekuendesa:

kubectl expose deployment hello-quarkus β€” type=NodePort β€” port=8080

Ngatigarei pane "-type" sarudzo yekuraira kwekufumura kwechinguva.

Patinofumura nekugadzira zvinhu zvinodiwa kuti tiite sevhisi yedu, tinoda, pakati pezvimwe zvinhu, kuti tikwanise kubatanidza kubva kunze kuenda kune hello-quarkus sevhisi inogara mukati medu-software-yakatsanangurwa network. Uye parameter mhando inotibvumira kugadzira uye kubatanidza zvinhu sezviyereso zvekutakura kuti tifambe traffic kune iyo network.

Somuenzaniso, kunyora type=LoadBalancer, isu tinongotanga iyo yeruzhinji cloud load balancer kuti tibatane kune yedu Kubernetes cluster. Izvi, hongu, zvakanaka, asi iwe unofanirwa kunzwisisa kuti gadziriso yakadaro ichasungwa zvakasimba kune yakatarwa gore reruzhinji uye zvichanyanya kuoma kuiendesa pakati peKubernetes zviitiko munzvimbo dzakasiyana.

Mumuenzaniso wedu type=NodePort, ndiko kuti, kufona kubasa redu kunoenda neIP kero yenode uye nhamba yechiteshi. Iyi sarudzo inokubvumira kuti usashandise chero makore eruzhinji, asi inoda akati wandei mamwe matanho. Kutanga, iwe unoda yako wega chiyero chemutoro, saka isu tichaendesa iyo NGINX mutoro wemuyero musumbu redu.

Nhanho yechitanhatu - Gadzira chinoyeresa

minikube ine akati wandei epuratifomu maficha anoita kuti zvive nyore kugadzira zvinhu zvaunoda kuti uwane kunze, senge ingress controllers. Minikube inouya yakasungirirwa neNginx ingress controller, uye zvese zvatinofanira kuita kuigonesa nekuigadzirisa.

minikube addons enable ingress

Zvino, nemurairo mumwe chete, isu tichagadzira Nginx ingress controller iyo inoshanda mukati me minikube cluster yedu:

ingress-nginx-controller-69ccf5d9d8-j5gs9 1/1 Running 1 33m

Nhanho 7 - Gadzira iyo ingress

Iye zvino isu tinoda kugadzirisa iyo Nginx ingress controller kuti igamuchire hello-quarkus zvikumbiro.

Ndine urombo, OpenShift, hatina kukutendai zvakakwana uye takakutorerai

Ndine urombo, OpenShift, hatina kukutendai zvakakwana uye takakutorerai

Uye pakupedzisira, isu tinofanirwa kushandisa iyi gadziriso.

Ndine urombo, OpenShift, hatina kukutendai zvakakwana uye takakutorerai

kubectl apply -f ingress.yml

Ndine urombo, OpenShift, hatina kukutendai zvakakwana uye takakutorerai

Sezvo isu tiri kuita zvese izvi pamushini wedu, isu tinongo wedzera yedu node IP kero kune /etc/hosts faira kutungamira zvikumbiro kune yedu minikube kune NGINX loader balancer.

192.168.99.100 hello-quarkus.info

Ndizvozvo, ikozvino sevhisi yedu minikube inowanikwa kubva kunze kuburikidza neNginx ingress controller.

Ndine urombo, OpenShift, hatina kukutendai zvakakwana uye takakutorerai

Zvakanaka, izvo zvaive nyore, handiti? Kana kuti kwete zvakanyanya?

Ndine urombo, OpenShift, hatina kukutendai zvakakwana uye takakutorerai

Mhanya paOpenShift (Code Ready Containers)

Uye ikozvino ngationei kuti zvese zvinoitwa sei paRed Hat OpenShift Container Platform (OCP).

Sezviri munyaya ye minikube, isu tinosarudza chirongwa chine imwechete-node OpenShift cluster muchimiro cheCode Ready Containers (CRC). Yaimbonzi minishift uye yakavakirwa paOpenShift Origin purojekiti, asi ikozvino yave CRC uye yakavakirwa paRed Hat's OpenShift Container Platform.

Pano, urombo, hatigone kuita asi kuti: "OpenShift yakanaka!"

Pakutanga, takafunga kunyora kuti budiriro paOpenShift haina kusiyana nebudiriro paKubernetes. Uye chaizvoizvo, ndizvo zvazviri. Asi mukati mekunyora iyi positi, takarangarira kuti mangani mafambiro asina kufanira aunofanira kuita kana iwe usina OpenShift, uye saka, zvakare, yakanaka. Isu tinoda zvinhu kuti zvive nyore, uye zviri nyore sei kuendesa uye kumhanya muenzaniso wedu paOpenShift tichienzaniswa ne minikube ndizvo zvakatikurudzira kunyora iyi positi.

Ngatimhanyei muhurongwa tione zvatinofanira kuita.

Saka mumuenzaniso we minikube, takatanga neDocker… Mirira, hatichada Docker yakaiswa pamushini.

Uye isu hatidi git yemuno.
Uye Maven haidiwe.
Uye haufanirwe kugadzira mufananidzo wemudziyo neruoko.
Uye haufanirwe kutsvaga chero repository yemidziyo mifananidzo.
Uye haufanire kuisa ingress controller.
Uye iwe haufanire kugadzirisa ingress zvakare.

Unonzwisisa here? Kuendesa uye kumhanyisa application yedu paOpenShift, hapana chimwe chezviri pamusoro chinodiwa. Uye nzira yacho pachayo ndeyotevera.

Nhanho 1 - Kutanga Yako OpenShift Cluster

Isu tinoshandisa Code Ready Containers kubva kuRed Hat, inova yakafanana Minikube, asi chete iine yakazara-node Openshift cluster.

crc start

Nhanho 2 - Vaka uye Tumira Chikumbiro kune OpenShift Cluster

Pari padanho iri apo kureruka uye nyore kweOpenShift inozviratidza mukubwinya kwayo kwese. Sezvinei nekugoverwa kwese kweKubernetes, isu tine nzira dzakawanda dzekumhanyisa application pane sumbu. Uye, sepanyaya yeKUK, isu tinonyanya kusarudza iyo yakapfava.

OpenShift yagara ichivakwa sepuratifomu yekuvaka nekumhanyisa zvikumbiro zvemidziyo. Kuvaka midziyo yagara iri chikamu chakakosha chepuratifomu iyi, saka kune boka rekuwedzera Kubernetes zviwanikwa zveanoenderana mabasa.

Tichange tichishandisa OpenShift's Source 2 Image (S2I) maitiro, ane nzira dzakasiyana siyana dzekutora sosi yedu (kodhi kana mabhinari) uye kuishandura kuita mufananidzo wemumidziyo unomhanya pane OpenShift cluster.

Nokuda kweizvi tinoda zvinhu zviviri:

  • Yedu kodhi kodhi mune git repository
  • Muvaki-mufananidzo, zvichibva pane iyo gungano richaitwa.

Kune mizhinji mifananidzo yakadai, inochengetwa neRed Hat uye nenharaunda, uye isu tichashandisa iyo OpenJDK mufananidzo, zvakanaka, sezvo ndiri kuvaka Java application.

Unogona kumhanya S2I kuvaka zvese kubva kuOpenShift Developer graphical console uye kubva kumutsetse wekuraira. Isu tichashandisa iyo nyowani-app yekuraira, tichiiudza kwekuwana iyo muvaki mufananidzo uye yedu sosi kodhi.

Ndine urombo, OpenShift, hatina kukutendai zvakakwana uye takakutorerai

oc new-app registry.access.redhat.com/ubi8/openjdk-11:latest~https://github.com/gcolman/quarkus-hello-world.git

Ndizvozvo, application yedu yakagadzirwa. Mukuita izvi, maitiro eS2I akaita zvinhu zvinotevera:

  • Yakagadzira sevhisi kuvaka-pod kune ese marudzi ezvinhu zvine chekuita nekuvaka iyo application.
  • Yakagadzira OpenShift Build config.
  • Ini ndakadhawunirodha mufananidzo wemuvaki kune yemukati OpenShift docker registry.
  • Yakavharwa "Mhoro Nyika" kunzvimbo yenzvimbo.
  • Akaona muine maven pom imomo akabva abatanidza app nemaven.
  • Yakagadzira mufananidzo mutsva wemudziyo une yakaunganidzwa Java application uye isa mufananidzo uyu mukati memukati registry registry.
  • Yakagadzirwa Kubernetes Deployment ine zvakatemwa zvepodhi, sevhisi, nezvimwe.
  • Yakatangwa deploy container image.
  • Yakabviswa sevhisi kuvaka-pod.

Pane zvakawanda pane iyi runyorwa, asi chinhu chikuru ndechekuti iyo yese kuvaka inoitika mukati meOpenShift chete, iyo yemukati Docker registry iri mukati meOpenShift, uye maitiro ekuvaka anogadzira ese Kubernetes zvikamu uye anomhanyisa iwo pasumbu.

Kana iwe ukatarisisa kuvhurwa kweS2I mukoni, unogona kuona kuti iyo yekuvaka pod inotangwa sei panguva yekuvaka.

Ndine urombo, OpenShift, hatina kukutendai zvakakwana uye takakutorerai

Uye zvino ngatitarisei matanda emuvaki pod: chekutanga, ipapo iwe unogona kuona kuti maven anoita sei basa rayo uye kurodha anotsamira kuvaka yedu java application.

Ndine urombo, OpenShift, hatina kukutendai zvakakwana uye takakutorerai

Mushure mekuvaka maven kwapera, kuvakwa kwemufananidzo wemudziyo kunotangwa, uyezve uyu mufananidzo wakavakwa unotumirwa kune yemukati repository.

Ndine urombo, OpenShift, hatina kukutendai zvakakwana uye takakutorerai

Zvose, chirongwa chegungano chinopedzwa. Zvino ngative nechokwadi chekuti mapodhi nemasevhisi ekushandisa kwedu atanga musumbu.

oc get service

Ndine urombo, OpenShift, hatina kukutendai zvakakwana uye takakutorerai

Ndizvo zvose. Uye chikwata chimwe chete. Chatinofanira kuita kufumura sevhisi iyi kuti tiwane kunze.

Nhanho 3 - ita kuti sevhisi ibudise pachena yekuwana kubva kunze

Sezvakaitika kuKUK, papuratifomu yeOpenShift, yedu "Mhoro Nyika" inodawo router kutungamira traffic yekunze kune sevhisi mukati mesumbu. MuOpenShift izvi zvinoita kuti zvive nyore. Chekutanga, iyo HAProxy routing chikamu inoiswa musumbu nekukasira (inogona kuchinjirwa kune imwechete NGINX). Chechipiri, kune zvakakosha uye zvakanyanya kurongeka zviwanikwa zvinonzi Routes, izvo zvinoyeuchidza Ingress zvinhu mune yakanaka yekare Kubernetes (chokwadi, OpenShift's Routes yakapesvedzera zvakanyanya dhizaini yeIngress zvinhu, izvo zvino zvinogona kushandiswa muOpenShift) , asi yedu "Mhoroi". Nyika", uye mune dzinenge dzimwe nyaya dzese, Iyo yakajairwa Route yakatikwanira pasina kumwe kugadziridzwa.

Kugadzira FQDN inotenderera ye "Mhoro Nyika" (hongu, OpenShiift ine yayo DNS yekufambisa nemazita ebasa), isu tinongofumura sevhisi yedu:

Ndine urombo, OpenShift, hatina kukutendai zvakakwana uye takakutorerai

oc expose service quarkus-hello-world

Kana iwe ukatarisa iyo ichangobva kugadzirwa Route, saka unogona kuwana iyo FQDN uye rumwe ruzivo rwenzira ipapo:

oc get route

Ndine urombo, OpenShift, hatina kukutendai zvakakwana uye takakutorerai

Uye pakupedzisira, isu tinowana sevhisi yedu kubva kubrowser:

Ndine urombo, OpenShift, hatina kukutendai zvakakwana uye takakutorerai

Asi zvino zvakanga zvava nyore chaizvo!

Isu tinoda Kubernetes uye zvese izvo tekinoroji iyi inobvumidza iwe kuti uite, uye isu tinoda zvakare nyore uye kureruka. Kubernetes yakagadzirirwa kugadzira midziyo yakagovaniswa, inokwirisa zviri nyore kushanda, asi kureruka kwayo hakuchakwane kuunza maapplication mukugadzira nhasi. Apa ndipo panopinda OpenShift, ichienderana nenguva uye ichipa kuvandudza-centric Kubernetes. Kuedza kwakawanda kwakaiswa mari kuti igadzirise iyo OpenShift chikuva chakanangana nemugadziri, kusanganisira kugadzirwa kwezvishandiso zvakaita seS2I, ODI, Developer Portal, OpenShift Operator Framework, IDE kubatanidzwa, Developer Catalogs, Helm kubatanidzwa, kutarisa, uye zvimwe zvakawanda.

Tinovimba kuti chinyorwa ichi chaive chinonakidza uye chinobatsira kwauri. Uye iwe unogona kuwana zvimwe zviwanikwa, zviwanikwa uye zvimwe zvinhu zvinobatsira pakuvandudza pane OpenShift papuratifomu pane portal Red Hat Developers.

Source: www.habr.com

Voeg