Miala tsiny aho, OpenShift, tsy dia nankasitraka anao loatra izahay ary tsy niraharaha anao

Nosoratana ity lahatsoratra ity satria nifampiresaka vitsivitsy tamin'ny mpanjifa momba ny famolavolana rindranasa ao amin'ny Kubernetes sy ny mombamomba ny fivoarana toy izany ao amin'ny OpenShift ny mpiasanay.

Miala tsiny aho, OpenShift, tsy dia nankasitraka anao loatra izahay ary tsy niraharaha anao

Matetika isika dia manomboka amin'ny thesis fa Kubernetes fotsiny i Kubernetes, ary OpenShift dia efa sehatra Kubernetes, toa an'i Microsoft AKS na Amazon EKS. Ny tsirairay amin'ireo sehatra ireo dia manana tombony manokana, mifantoka amin'ny mpihaino kendrena manokana. Ary rehefa afaka izany, ny resaka dia efa mikoriana amin'ny fampitahana ny tanjaka sy ny fahalemen'ny sehatra manokana.

Amin'ny ankapobeny, nieritreritra ny hanoratra ity lahatsoratra ity izahay miaraka amin'ny vokatra toy ny "Henoy, tsy maninona na aiza na aiza alehanao ny code, amin'ny OpenShift na amin'ny AKS, amin'ny EKS, amin'ny Kubernetes mahazatra sasany, eny amin'ny Kubernetes rehetra. (aleo atao hoe KUK raha fohy) "Tena tsotra, na any na any."

Avy eo dia nikasa ny haka ny "Hello World" tsotra indrindra izahay ary hampiasa izany mba hampisehoana ny mahazatra sy ny fahasamihafana misy eo amin'ny CMC sy ny Red Hat OpenShift Container Platform (manaraka izany, OCP na OpenShift tsotra).

Na izany aza, teo am-panoratana ity lahatsoratra ity dia nahatsapa izahay fa efa zatra mampiasa OpenShift ka tsy tsapanay tsotra izao ny nitombony sy nivadika ho sehatra mahagaga izay lasa mihoatra lavitra noho ny fizarana Kubernetes. Matetika isika no maka ny fahamatorana sy ny fahatsoran'ny OpenShift, nefa tsy mijery ny hatsarany.

Amin'ny ankapobeny, tonga ny fotoana hibebahana mavitrika, ary ankehitriny isika dia hampitaha tsikelikely ny fametrahana ny "Hello World" ao amin'ny KUK sy amin'ny OpenShift, ary hanao izany araka izay azo atao izahay (tsara, afa-tsy ny fampisehoana manokana toe-tsaina manoloana ny lohahevitra). Raha toa ianao ka liana amin'ny hevitra subjective fotsiny momba ity olana ity, dia afaka mamaky azy io eto (EN). Ary amin'ity lahatsoratra ity dia hifikitra amin'ny zava-misy isika ary ny zava-misy ihany.

sampahony

Noho izany, mila cluster ny "Hello World" antsika. Aoka hatao hoe "tsia" amin'ny rahona ho an'ny daholobe, mba tsy handoavam-bola ho an'ny mpizara, rejisitra, tambajotra, famindrana data, sns. Noho izany, misafidy cluster iray misy node tsotra isika Minikube (ho an'ny KUK) ary Kaontenera vonona amin'ny kaody (ho an'ny cluster OpenShift). Ireo safidy roa ireo dia tena mora apetraka, saingy mitaky loharanon-karena be dia be amin'ny solosainao.

Miala tsiny aho, OpenShift, tsy dia nankasitraka anao loatra izahay ary tsy niraharaha anao

Fivoriambe momba ny KUK-e

Ka ndao handeha.

Dingana 1 - Fanamboarana ny sarin'ny kaonteninay

Andao hanomboka amin'ny fametrahana ny "Hello World" amin'ny minikube. Izany dia mitaky:

  1. 1. Napetraka Docker.
  2. 2. Napetraka Git.
  3. 3. Nametraka Maven (raha ny marina, ity tetikasa ity dia mampiasa mvnw binary, ka azonao atao tsy misy izany).
  4. 4. Raha ny marina, ny loharano mihitsy, i.e. fitehirizana clone github.com/gcolman/quarkus-hello-world.git

Ny dingana voalohany dia ny famoronana tetikasa Quarkus. Aza matahotra raha mbola tsy nampiasa Quarkus.io ianao - mora izany. Fidio fotsiny ireo singa tianao hampiasaina amin'ny tetikasa (RestEasy, Hibernate, Amazon SQS, Camel, sns.), ary avy eo i Quarkus mihitsy, raha tsy misy ny fandraisanao anjara, dia mametraka ny archetype maven ary mametraka ny zava-drehetra amin'ny github. Izany hoe, tsindriana iray amin'ny totozy ara-bakiteny - dia vita ianao. Izany no antony hitiavanay an'i Quarkus.

Miala tsiny aho, OpenShift, tsy dia nankasitraka anao loatra izahay ary tsy niraharaha anao

Ny fomba tsotra indrindra hananganana ny "Hello World" ho sary misy container dia ny fampiasana ny fanitarana quarkus-maven ho an'ny Docker, izay hanao ny asa rehetra ilaina. Miaraka amin'ny fahatongavan'i Quarkus dia lasa mora sy tsotra tokoa izany: ampio ny fanitarana container-image-docker ary afaka mamorona sary miaraka amin'ny baiko maven ianao.

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

Ary farany, manamboatra ny sarinay izahay amin'ny fampiasana Maven. Vokatr'izany, ny kaody loharanontsika dia mivadika ho sarin'ny kaontenera efa vita, izay efa azo atao ao anatin'ny fotoana fiasan'ny container.

Miala tsiny aho, OpenShift, tsy dia nankasitraka anao loatra izahay ary tsy niraharaha anao

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

Izany, raha ny marina, dia izao, azonao atao ny mampandeha ny kaontenera miaraka amin'ny baikon'ny docker run, rehefa nanao sarintany ny serivisy ho an'ny port 8080 mba ho azo idirana.

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

Miala tsiny aho, OpenShift, tsy dia nankasitraka anao loatra izahay ary tsy niraharaha anao

Rehefa nanomboka ny ohatra kaontenera, ny hany sisa tavela dia ny manamarina amin'ny baiko curl fa mandeha ny serivisy:

Miala tsiny aho, OpenShift, tsy dia nankasitraka anao loatra izahay ary tsy niraharaha anao

Noho izany, miasa ny zava-drehetra, ary tena mora sy tsotra izany.

Dingana 2 - Alefaso any amin'ny fitahirizana sary fitoeran-javatra

Amin'izao fotoana izao, ny sary noforoninay dia voatahiry ao an-toerana ao amin'ny fitahirizana kaontenera eto an-toerana. Raha te hampiasa an'io sary io ao amin'ny tontolo KUK misy antsika isika, dia mila mametraka izany any amin'ny tahiry hafa. Tsy manana ireo endri-javatra ireo ny Kubernetes, noho izany dia hampiasa dockerhub izahay. Satria, voalohany, maimaim-poana, ary faharoa, (saika) ny rehetra no manao izany.

Tena tsotra ihany koa izany, ary kaonty dockerhub ihany no ilaina eto.

Noho izany, mametraka dockerhub izahay ary mandefa ny sarinay any.

Miala tsiny aho, OpenShift, tsy dia nankasitraka anao loatra izahay ary tsy niraharaha anao

Dingana 3 - Manomboha Kubernetes

Misy fomba maro ahafahana manambatra ny configuration kubernetes mba hampandehanana ny "Hello World", fa ny tsotra indrindra amin'izy ireo no hampiasainay, satria olona toy izany isika ...

Voalohany, manomboka ny cluster minikube isika:

minikube start

Dingana 4 - Mametraka ny sarin'ny fitoeran'entanay

Amin'izao fotoana izao dia mila manova ny kaody sy ny sarin'ny container amin'ny configuration kubernetes isika. Raha lazaina amin'ny teny hafa dia mila pod sy famaritana fametrahana manondro ny sarin'ny kaontinay ao amin'ny dockerhub isika. Ny iray amin'ireo fomba tsotra indrindra hanaovana izany dia ny fampandehanana ny baiko famoronana famoronana manondro ny sarinay:

Miala tsiny aho, OpenShift, tsy dia nankasitraka anao loatra izahay ary tsy niraharaha anao

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

Miaraka amin'ity baiko ity, dia nilaza taminay COOK izahay mba hamorona tefy fametrahana, izay tokony ahitana ny famaritana pod ho an'ny sarin'ny container. Ity baiko ity ihany koa dia hampihatra an'io fandrindrana io amin'ny kluster minikube, ary hamorona deployment izay hampidina ny sarin'ny fitoeran-kitapo ary hampandeha pod amin'ny cluster.

Dingana 5 - misokatra ny fidirana amin'ny serivisy

Amin'izao fotoana izao dia manana sarin'ny kaontenera napetraka isika, fotoana izao hieritreretana ny fomba hanamboarana ny fidirana ivelany amin'ity serivisy Restful ity, izay, raha ny marina, dia voarindra ao amin'ny code.

Misy fomba maro eto. Ohatra, azonao atao ny mampiasa ny baiko expose mba hamoronana ho azy ireo singa Kubernetes mifanaraka amin'izany toy ny serivisy sy ny teboka farany. Raha ny marina, izao no hataontsika amin'ny fanatanterahana ny baiko expose ho an'ny zavatra deployment:

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

Andeha hojerentsika vetivety ny safidy "-type" amin'ny baiko expose.

Rehefa mampiharihary sy mamorona ireo singa ilaina amin'ny fampandehanana ny serivisintsika isika dia mila, ankoatra ny zavatra hafa, ny fahafahana mifandray avy any ivelany mankany amin'ny serivisy hello-quarkus izay mipetraka ao anatin'ny tambajotra voafaritry ny rindrambaiko. Ary parameter karazana mamela antsika hamorona sy hampifandray zavatra toy ny load balancers mba hitarika ny fifamoivoizana mankany amin'io tambajotra io.

Ohatra, manoratra type=LoadBalancer, dia manomboka mandeha ho azy ny mpandrindra entana rahona ho an'ny daholobe mba hifandraisana amin'ny kluster Kubernetes. Mazava ho azy fa tsara izany, saingy mila takatrao fa hifamatotra mafy amin'ny rahona ho an'ny daholobe manokana ny fanitsiana toy izany ary ho sarotra kokoa ny hamindra izany eo amin'ny tranga Kubernetes amin'ny tontolo samihafa.

Amin'ny ohatra ataontsika type=NodePort, izany hoe, ny antso amin'ny serivisy dia mandeha amin'ny adiresy IP an'ny node sy ny laharana seranana. Ity safidy ity dia ahafahanao tsy mampiasa rahona ho an'ny daholobe, fa mitaky dingana fanampiny maromaro. Voalohany, mila ny mpifandanja entanao manokana ianao, noho izany dia hametraka ny mpifandanja entana NGINX ao amin'ny cluster izahay.

Dingana 6 - Manangana mpifandanja entana

minikube dia manana endri-javatra maromaro amin'ny sehatra izay manamora ny famoronana ireo singa ilainao amin'ny fidirana ivelany, toy ny fanaraha-maso ny ingress. Minikube dia tonga miaraka amin'ny mpanara-maso Nginx ingress, ary ny hany tsy maintsy ataontsika dia ny mamela azy sy manamboatra azy.

minikube addons enable ingress

Ankehitriny, miaraka amin'ny baiko iray monja dia hamorona mpanara-maso Nginx ingress izay hiasa ao anatin'ny cluster minikube izahay:

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

Dingana 7 - Amboary ny fidirana

Ankehitriny dia mila manamboatra ny controller Nginx ingress isika mba hanaiky ny fangatahana hello-quarkus.

Miala tsiny aho, OpenShift, tsy dia nankasitraka anao loatra izahay ary tsy niraharaha anao

Miala tsiny aho, OpenShift, tsy dia nankasitraka anao loatra izahay ary tsy niraharaha anao

Ary farany, mila mampihatra io fanamafisana io isika.

Miala tsiny aho, OpenShift, tsy dia nankasitraka anao loatra izahay ary tsy niraharaha anao

kubectl apply -f ingress.yml

Miala tsiny aho, OpenShift, tsy dia nankasitraka anao loatra izahay ary tsy niraharaha anao

Koa satria manao izany rehetra izany amin'ny milinay manokana izahay, ampianay fotsiny ny adiresy IP an'ny node amin'ny rakitra /etc/hosts mba hitarihana ny fangatahana http amin'ny minikube mankany amin'ny mpifandanja entana NGINX.

192.168.99.100 hello-quarkus.info

Izay ihany, ankehitriny ny serivisy minikube dia azo alaina avy any ivelany amin'ny alΓ lan'ny fanaraha-maso Nginx ingress.

Miala tsiny aho, OpenShift, tsy dia nankasitraka anao loatra izahay ary tsy niraharaha anao

Eny, mora izany, sa tsy izany? Sa tsy dia be loatra?

Miala tsiny aho, OpenShift, tsy dia nankasitraka anao loatra izahay ary tsy niraharaha anao

Mandehana amin'ny OpenShift (Container Ready Code)

Ary ankehitriny andeha hojerentsika ny fomba nanaovana izany rehetra izany amin'ny Red Hat OpenShift Container Platform (OCP).

Toy ny amin'ny minikube, misafidy tetika miaraka amin'ny cluster OpenShift tokana amin'ny endrika Code Ready Containers (CRC) izahay. Nantsoina hoe minishift izy io taloha ary nifototra tamin'ny tetikasa OpenShift Origin, fa izao dia CRC ary natsangana tamin'ny OpenShift Container Platform an'ny Red Hat.

Eto, miala tsiny, tsy afaka ny hiteny izahay hoe: "Mahafinaritra ny OpenShift!"

Tany am-boalohany dia nieritreritra ny hanoratra izahay fa ny fampandrosoana amin'ny OpenShift dia tsy misy hafa amin'ny fampandrosoana amin'ny Kubernetes. Ary raha ny marina, izany no izy. Saingy teo am-panoratana ity lahatsoratra ity dia tsaroanay hoe firy ny hetsika tsy ilaina tokony hataonao rehefa tsy manana OpenShift ianao, ary noho izany dia tsara tarehy indray. Tianay ny zavatra ho mora, ary ny maha-mora ny fametrahana sy ny fampandehanana ny ohatra amin'ny OpenShift raha oharina amin'ny minikube no nanentana anay hanoratra ity lahatsoratra ity.

Andeha hojerentsika ny dingana ary hojerentsika izay tokony hatao.

Ka amin'ny ohatra minikube, nanomboka tamin'ny Docker izahay… Andraso, tsy mila apetraka amin'ny milina intsony ny Docker.

Ary tsy mila git eo an-toerana izahay.
Ary tsy ilaina ny Maven.
Ary tsy mila mamorona sary container amin'ny tanana ianao.
Ary tsy mila mitady fitahirizana sary misy container ianao.
Ary tsy mila mametraka controller ingress ianao.
Ary tsy mila manitsy ny ingress koa ianao.

Azonao ve? Mba hametrahana sy hampandehanana ny fampiharana amin'ny OpenShift dia tsy ilaina ireo voalaza etsy ambony ireo. Ary ny dingana mihitsy dia toy izao manaraka izao.

Dingana 1 - Manomboka ny Cluster OpenShift anao

Izahay dia mampiasa Code Ready Containers avy amin'ny Red Hat, izay mitovy amin'ny Minikube ihany, fa miaraka amin'ny cluster Openhift tokana feno.

crc start

Dingana 2 - Amboary sy apetraho amin'ny Cluster OpenShift ny fampiharana

Amin'ity dingana ity no isehoan'ny fahatsoran'ny OpenShift amin'ny voninahiny rehetra. Tahaka ny amin'ny fizarana Kubernetes rehetra, manana fomba maro ahafahana mampandeha fampiharana amin'ny cluster izahay. Ary, toy ny amin'ny KUK, misafidy manokana ny tsotra indrindra izahay.

OpenShift dia naorina hatrany ho sehatra fananganana sy fampandehanana rindranasa misy container. Ny fananganana kaontenera dia ampahany manan-danja hatrany amin'ity sehatra ity, noho izany dia misy andiana loharanon-karena Kubernetes fanampiny ho an'ny asa mifandraika amin'izany.

Hampiasa ny dingan'ny OpenShift's Source 2 Image (S2I) isika, izay manana fomba maro samihafa handraisana ny loharanontsika (kaody na binary) ary hamadika azy ho sary misy container izay mandeha amin'ny cluster OpenShift.

Mba hanaovana izany dia mila zavatra roa isika:

  • Ny kaody loharano ao amin'ny tahiry git
  • Builder-sary, mifototra amin'ny izay ny fivoriambe no hatao.

Betsaka ny sary toy izany, tazonin'ny Red Hat sy ny vondrom-piarahamonina, ary hampiasa ny sary OpenJDK izahay, tsara, satria manorina fampiharana Java aho.

Azonao atao ny manamboatra S2I avy amin'ny console grafika OpenShift Developer na avy amin'ny baiko baiko. Hampiasa ny baikon'ny fampiharana vaovao izahay, milaza aminy hoe aiza no hahazoana ny sary mpanamboatra sy ny kaody loharano.

Miala tsiny aho, OpenShift, tsy dia nankasitraka anao loatra izahay ary tsy niraharaha anao

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

Izay ihany, noforonina ny fampiharana anay. Amin'ny fanaovana izany, ny dingana S2I dia nanao ireto zavatra manaraka ireto:

  • Namorona serivisy fananganana-pod ho an'ny karazan-javatra rehetra mifandraika amin'ny fananganana ny fampiharana.
  • Namorona config OpenShift Build.
  • Nalainako tao amin'ny rejisitry ny docker OpenShift anatiny ny sary mpamorona.
  • Klonina ny "Hello World" ao amin'ny tahiry eo an-toerana.
  • Hitako fa nisy maven pom tao ary nanangona ny app tamin'ny maven.
  • Namorona sary kaontenera vaovao misy ny rindranasa Java natambatra ary napetrany tao amin'ny rejisitra fitoeran'entana anatiny ity sary ity.
  • Namorona Deployment Kubernetes miaraka amin'ny famaritana ny pod, serivisy, sns.
  • Natomboka ny fametrahana sary container.
  • Nesorina service build-pod.

Misy be dia be amin'ity lisitra ity, fa ny zava-dehibe dia ny fananganana manontolo dia ao anatin'ny OpenShift irery ihany, ny rejisitra Docker anatiny dia ao anatin'ny OpenShift, ary ny fizotran'ny fananganana dia mamorona singa Kubernetes rehetra ary mampandeha azy ireo amin'ny cluster.

Raha manara-maso maso ny fandefasana S2I ao amin'ny console ianao dia azonao jerena ny fomba nanombohana ny build pod mandritra ny fananganana.

Miala tsiny aho, OpenShift, tsy dia nankasitraka anao loatra izahay ary tsy niraharaha anao

Ary ankehitriny andeha hojerentsika ny diarin'ny mpanorina pod: voalohany, hitanao ny fomba anaovan'i maven ny asany sy ny fampidinana ny fiankinan-doha amin'ny fananganana ny fampiharana java.

Miala tsiny aho, OpenShift, tsy dia nankasitraka anao loatra izahay ary tsy niraharaha anao

Rehefa vita ny fananganana maven dia manomboka ny fananganana ny sarin'ny container, ary avy eo dia alefa any amin'ny tahiry anatiny ity sary namboarina ity.

Miala tsiny aho, OpenShift, tsy dia nankasitraka anao loatra izahay ary tsy niraharaha anao

Ny zava-drehetra, vita ny fizotry ny fivoriambe. Andeha hojerentsika izao fa nanomboka tao amin'ny cluster ny pods sy ny serivisy amin'ny fampiharana.

oc get service

Miala tsiny aho, OpenShift, tsy dia nankasitraka anao loatra izahay ary tsy niraharaha anao

Izay ihany. Ary ekipa iray ihany. Ny hany tsy maintsy ataontsika dia ny mampiseho an'io serivisy io ho an'ny fidirana ivelany.

Dingana 3 - ataovy mibaribary ny serivisy ho an'ny fidirana avy any ivelany

Toy ny amin'ny KUK, ao amin'ny sehatra OpenShift, ny "Hello World" dia mila router ihany koa hitarika ny fifamoivoizana ivelany mankany amin'ny serivisy ao anaty cluster. Ao amin'ny OpenShift dia manamora izany. Voalohany, ny singa routing HAProxy dia napetraka ao amin'ny cluster amin'ny alΓ lan'ny default (azo ovaina amin'ny NGINX mitovy). Faharoa, misy loharano manokana sy azo amboarina antsoina hoe Routes, izay mampahatsiahy ny zavatra Ingress ao amin'ny Kubernetes taloha tsara (raha ny marina, ny OpenShift's Routes dia nisy fiantraikany be tamin'ny famolavolana ny zavatra Ingress, izay azo ampiasaina amin'ny OpenShift ankehitriny), fa ho an'ny "Hello". World", ary saika amin'ny tranga hafa rehetra, ny Route mahazatra dia ampy ho antsika tsy misy fanampim-panazavana fanampiny.

Mba hamoronana FQDN azo alaina ho an'ny "Hello World" (eny, OpenShiift dia manana DNS manokana ho an'ny fandalovana amin'ny anaran'ny serivisy), asehoy fotsiny ny serivisy:

Miala tsiny aho, OpenShift, tsy dia nankasitraka anao loatra izahay ary tsy niraharaha anao

oc expose service quarkus-hello-world

Raha mijery ny Route vao noforonina ianao dia afaka mahita ny FQDN sy ny fampahalalana hafa momba ny lalana:

oc get route

Miala tsiny aho, OpenShift, tsy dia nankasitraka anao loatra izahay ary tsy niraharaha anao

Ary farany, miditra amin'ny serivisy avy amin'ny navigateur izahay:

Miala tsiny aho, OpenShift, tsy dia nankasitraka anao loatra izahay ary tsy niraharaha anao

Fa izao dia tena mora!

Tianay ny Kubernetes sy izay rehetra avelan'ity teknolojia ity hataonao, ary tianay koa ny fahatsorana sy ny fahamaivanana. Ny Kubernetes dia natao hanamora ny fiasana ireo kaontenera azo zaraina sy azo scalable, saingy ny fahatsoran'izy io dia tsy ampy hitondrana ny fampiharana amin'ny famokarana ankehitriny. Ary eto no miditra ny OpenShift, izay manaraka ny fotoana ary manolotra Kubernetes, mifantoka indrindra amin'ny mpamorona. Ezaka be dia be no natao hanamboarana ny sehatra OpenShift manokana ho an'ny mpamorona, anisan'izany ny famoronana fitaovana toy ny S2I, ODI, Portal Developer, OpenShift Operator Framework, fampidirana IDE, Catalogs Developer, fampidirana Helm, fanaraha-maso, ary ny maro hafa.

Manantena izahay fa nahaliana sy nahasoa anao ity lahatsoratra ity. Ary afaka mahita loharano fanampiny, fitaovana ary zavatra hafa ilaina amin'ny fampivoarana amin'ny sehatra OpenShift ianao eo amin'ny vavahadin-tserasera Mpamorona Red Hat.

Source: www.habr.com

Add a comment