Pasayloa OpenShift, wala ka namo gipasalamatan ug gipasagdan ka

Gisulat kini nga post tungod kay ang among mga empleyado adunay daghang mga panag-istoryahanay sa mga kliyente bahin sa pag-uswag sa aplikasyon sa Kubernetes ug ang mga detalye sa ingon nga pag-uswag sa OpenShift.

Pasayloa OpenShift, wala ka namo gipasalamatan ug gipasagdan ka

Kasagaran magsugod kami sa thesis nga ang Kubernetes Kubernetes lang, ug ang OpenShift usa na ka Kubernetes nga plataporma, sama sa Microsoft AKS o Amazon EKS. Ang matag usa niini nga mga plataporma adunay kaugalingon nga mga bentaha, nga gitumong sa usa ka partikular nga target audience. Ug pagkahuman niini, ang panag-istoryahanay mibalik sa pagtandi sa mga kalig-on ug mga kahuyang sa piho nga mga plataporma.

Sa kinatibuk-an, nakahunahuna kami sa pagsulat niini nga post nga adunay konklusyon sama sa "Paminaw, dili igsapayan kung asa ipadagan ang code, sa OpenShift o sa AKS, sa EKS, sa pipila ka naandan nga Kubernetes, o sa bisan unsang Kubernetes. (sa kalip-ot tawgon nato nga KUK) "Sayon ra kaayo, didto ug didto."

Dayon nagplano kami nga kuhaon ang pinakasimple nga "Hello World" ug gamiton ang panig-ingnan niini aron ipakita kung unsa ang kasagaran ug unsa ang kalainan tali sa KUC ug sa Red Hat OpenShift Container Platform (pagkahuman niini, OCP o yano nga OpenShift).

Bisan pa, samtang gisulat namon kini nga post, nahibal-an namon nga naanad na kami sa paggamit sa OpenShift sa dugay nga panahon nga wala kami makaamgo kung giunsa kini mitubo ug nahimo nga usa ka talagsaon nga plataporma nga nahimo’g labi pa sa usa ka pag-apod-apod sa Kubernetes. Kita adunay kalagmitan sa pagkuha sa pagkahamtong ug kayano sa OpenShift alang sa gihatag, ug mawad-an sa panan-aw sa iyang kahayag.

Sa kinatibuk-an, ang panahon niabot na alang sa aktibong paghinulsol, ug karon kita sa hinay-hinay nga itandi ang pag-commission sa atong “Hello World” sa KUK ug sa OpenShift, ug ato kining buhaton sa tumong kutob sa mahimo (maayo, gawas kon usahay magpakita ug personal nga kinaiya sa hilisgutan). Kung interesado ka sa usa ka suhetibo nga opinyon bahin sa kini nga isyu, mahimo nimo kini basahon dinhi (EN). Ug sa kini nga post kita magpabilin sa mga kamatuoran ug sa mga kamatuoran lamang.

Mga pundok

Busa, ang atong "Hello World" nanginahanglan mga cluster. Moingon dayon kami og "dili" sa bisan unsang publikong panganod, aron dili makabayad sa mga server, rehistro, network, pagbalhin sa datos, ug uban pa. Tungod niini, gipili namo ang usa ka yano nga single-node cluster sa Minikube (para sa KUK) ug Mga Sudlanan nga Andam sa Code (alang sa OpenShift cluster). Ang duha niini nga mga kapilian sayon ​​​​nga i-install, apan magkinahanglan og daghang mga kapanguhaan sa imong laptop.

Pasayloa OpenShift, wala ka namo gipasalamatan ug gipasagdan ka

Asembliya sa KUK-e

Mao na ningpadayon ta.

Lakang 1 - paghimo sa among sulud nga imahe

Magsugod ta pinaagi sa pag-deploy sa atong “Hello World” sa minikube. Aron mahimo kini kinahanglan nimo:

  1. 1. Gi-install ang Docker.
  2. 2. Git-instalar.
  3. 3. Gi-install nga Maven (sa tinuud, kini nga proyekto naggamit sa mvnw binary, aron mahimo nimo kung wala kini).
  4. 4. Sa pagkatinuod, ang tinubdan mismo, i.e. clone sa repository github.com/gcolman/quarkus-hello-world.git

Ang unang lakang mao ang paghimo og proyekto sa Quarkus. Ayaw pagkaalarma kung wala ka pa nagtrabaho sa Quarkus.io - dali ra. Pilia ra nimo ang mga sangkap nga gusto nimong gamiton sa proyekto (RestEasy, Hibernate, Amazon SQS, Camel, ug uban pa), ug dayon ang Quarkus mismo, nga wala ang imong partisipasyon, gi-configure ang maven archetype ug gibutang ang tanan sa github. Kana mao, sa literal usa ka pag-klik sa mouse ug nahuman ka. Mao kini ang hinungdan nga gihigugma namon ang Quarkus.

Pasayloa OpenShift, wala ka namo gipasalamatan ug gipasagdan ka

Ang pinakasayon ​​nga paagi sa paghimo sa atong "Hello World" ngadto sa usa ka sudlanan nga imahen mao ang paggamit sa quarkus-maven extensions para sa Docker, nga maoy mobuhat sa tanang gikinahanglang trabaho. Sa pag-abot sa Quarkus, kini nahimong sayon ​​​​ug yano: idugang ang container-image-docker extension ug makahimo ka og mga imahe gamit ang maven commands.

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

Sa katapusan, among gitukod ang among imahe gamit ang Maven. Ingon usa ka sangputanan, ang among gigikanan nga code nahimo nga usa ka andam nga nahimo nga sulud nga imahe nga mahimo nang magamit sa sulud sa runtime nga sulud.

Pasayloa OpenShift, wala ka namo gipasalamatan ug gipasagdan ka

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

Kana lang, karon mahimo nimong sugdan ang sudlanan gamit ang docker run command, pagmapa sa among serbisyo sa port 8080 aron kini ma-access.

docker run -i — rm -p 8080:8080 gcolman/quarkus-hello-world

Pasayloa OpenShift, wala ka namo gipasalamatan ug gipasagdan ka

Human magsugod ang pananglitan sa sudlanan, ang nahabilin mao ang pagsusi sa curl command nga ang among serbisyo nagdagan:

Pasayloa OpenShift, wala ka namo gipasalamatan ug gipasagdan ka

Mao nga ang tanan nagtrabaho ug kini dali ug yano.

Lakang 2 - ipadala ang among sudlanan sa repository sa imahe sa sulud

Sa pagkakaron, ang hulagway nga among gibuhat gitipigan sa lokal, sa among lokal nga sudlanan nga tipiganan. Kung gusto namon gamiton kini nga imahe sa among COOK nga palibot, nan kinahanglan kini ibutang sa uban pang repository. Ang Kubernetes walay ingon nga mga bahin, mao nga gamiton namo ang dockerhub. Tungod kay, una, kini libre, ug ikaduha, (halos) ang tanan naghimo niini.

Kini usab yano kaayo, ug ang tanan nga imong gikinahanglan mao ang usa ka dockerhub account.

Mao nga, gi-install namon ang dockerhub ug ipadala ang among imahe didto.

Pasayloa OpenShift, wala ka namo gipasalamatan ug gipasagdan ka

Lakang 3 - ilunsad ang Kubernetes

Adunay daghang mga paagi sa pag-assemble sa kubernetes configuration aron mapadagan ang among "Hello World", apan among gamiton ang pinakasimple niini, mao kana ang paagi nga kami...

Una, atong ilunsad ang minikube cluster:

minikube start

Lakang 4 - i-deploy ang among imahe sa sulud

Karon kinahanglan namong i-convert ang among code ug container image ngadto sa kubernetes configurations. Sa ato pa, kinahanglan namo ang pod ug deployment definition nga nagpunting sa among container image sa dockerhub. Usa sa labing kadali nga paagi aron mahimo kini mao ang pagpadagan sa paghimo sa deployment command nga nagtudlo sa among imahe:

Pasayloa OpenShift, wala ka namo gipasalamatan ug gipasagdan ka

kubectl create deployment hello-quarkus — image =gcolman/quarkus-hello-world:1.0.0-SNAPSHOT

Uban niini nga sugo gisultihan namo ang among COO sa paghimo og deployment configuration, nga kinahanglan adunay sulod nga pod specification para sa among container image. Kini nga sugo mag-aplay usab niini nga configuration sa among minikube cluster, ug maghimo og deployment nga mag-download sa among container image ug maglansad sa pod sa cluster.

Lakang 5 – ablihi ang access sa among serbisyo

Karon nga kami adunay usa ka gi-deploy nga imahe sa sudlanan, panahon na nga hunahunaon kung giunsa ang pag-configure sa gawas nga pag-access sa kini nga Restful nga serbisyo, nga, sa tinuud, giprograma sa among code.

Adunay daghang mga paagi dinhi. Pananglitan, mahimo nimong gamiton ang expose command aron awtomatik nga maghimo sa angay nga mga sangkap sa Kubernetes, sama sa mga serbisyo ug mga endpoint. Sa tinuud, mao kini ang atong buhaton pinaagi sa pagpatuman sa expose command alang sa atong deployment object:

kubectl expose deployment hello-quarkus — type=NodePort — port=8080

Atong tan-awon sa makadiyot ang "-type" nga kapilian sa expose command.

Kung atong ibutyag ug mugnaon ang mga sangkap nga gikinahanglan sa pagpadagan sa atong serbisyo, kita, lakip sa ubang mga butang, kinahanglan nga makahimo sa pagkonektar gikan sa gawas ngadto sa hello-quarkus nga serbisyo, nga anaa sulod sa atong software-defined network. Ug parameter matang nagtugot kanamo sa paghimo ug pagkonektar sa mga butang sama sa mga load balancer aron maruta ang trapiko niini nga network.

Pananglitan, pinaagi sa pagsulat tipo=LoadBalancer, awtomatiko namong naghatag ug load balancer sa publikong panganod aron makonektar sa among Kubernetes cluster. Kini, siyempre, maayo, apan kinahanglan nimo nga masabtan nga ang ingon nga pag-configure hugot nga ihigot sa usa ka piho nga publiko nga panganod ug mas lisud ang pagbalhin tali sa mga higayon sa Kubernetes sa lainlaing mga palibot.

Sa atong ehemplo tipo=NodePort, kana mao, ang among serbisyo ma-access sa IP address ug numero sa port sa node. Gitugotan ka niini nga kapilian nga dili mogamit bisan unsang publiko nga panganod, apan nanginahanglan daghang dugang nga mga lakang. Una, kinahanglan nimo ang imong kaugalingon nga load balancer, mao nga among i-deploy ang NGINX load balancer sa among cluster.

Lakang 6 – pag-instalar og load balancer

Ang minikube adunay ubay-ubay nga mga gimbuhaton sa plataporma nga nagpasayon ​​sa paghimo sa gawas nga accessible nga mga sangkap, sama sa ingress controllers. Ang Minikube moabut uban ang Nginx ingress controller, ug ang kinahanglan namong buhaton mao ang pagpagana niini ug pag-configure niini.

minikube addons enable ingress

Karon maghimo kami usa ka Nginx ingress controller nga adunay usa ra ka mando, nga molihok sa sulod sa among minikube cluster:

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

Lakang 7 - Pag-set up sa ingress

Karon kinahanglan namong i-configure ang Nginx ingress controller aron kini modawat sa mga hangyo sa hello-quarkus.

Pasayloa OpenShift, wala ka namo gipasalamatan ug gipasagdan ka

Pasayloa OpenShift, wala ka namo gipasalamatan ug gipasagdan ka

Ug sa katapusan, kinahanglan natong i-apply kini nga configuration.

Pasayloa OpenShift, wala ka namo gipasalamatan ug gipasagdan ka

kubectl apply -f ingress.yml

Pasayloa OpenShift, wala ka namo gipasalamatan ug gipasagdan ka

Tungod kay gibuhat namo kining tanan sa among kaugalingong kompyuter, idugang lang namo ang IP address sa among node sa /etc/ hosts file aron i-ruta ang mga http request sa among minikube ngadto sa NGINX load balancer.

192.168.99.100 hello-quarkus.info

Mao na, karon ang among serbisyo sa minikube ma-access sa gawas pinaagi sa Nginx ingress controller.

Pasayloa OpenShift, wala ka namo gipasalamatan ug gipasagdan ka

Aw, sayon ​​ra kana, di ba? O dili kaayo?

Pasayloa OpenShift, wala ka namo gipasalamatan ug gipasagdan ka

Nagdagan sa OpenShift (Code Ready Containers)

Karon atong tan-awon kung giunsa kining tanan nahimo sa Red Hat OpenShift Container Platform (OCP).

Sama sa minikube, gipili namo ang usa ka node nga OpenShift cluster design sa porma sa Code Ready Containers (CRC). Kaniadto, gitawag kini nga minishift ug gibase sa proyekto sa OpenShift Origin, apan karon CRC na kini ug gitukod sa OpenShift Container Platform sa Red Hat.

Dinhi kami, pasensya, dili makapugong sa pag-ingon: "Ang OpenShift nindot kaayo!"

Sa sinugdan, gihunahuna namon nga isulat nga ang pag-uswag sa OpenShift wala’y kalainan sa pag-uswag sa Kubernetes. Ug sa esensya mao kini ang paagi. Apan sa proseso sa pagsulat niini nga post, nahinumduman namo kung pila ka dugang nga mga lihok ang kinahanglan nimong buhaton kung wala ka OpenShift, ug mao kana ang hinungdan, pag-usab, kini kahibulongan. Ganahan kami niini kung ang tanan dali nga mabuhat, ug kung unsa kadali ang among panig-ingnan sa pag-deploy ug pagdagan sa OpenShift kumpara sa minikube mao ang nag-aghat kanamo sa pagsulat niini nga post.

Atong ipadayon ang proseso ug tan-awon kung unsa ang kinahanglan naton buhaton.

Busa, sa minikube nga pananglitan, nagsugod kami sa Docker... Paghulat, dili na namo kinahanglan nga i-install ang Docker sa makina.

Ug wala namo kinahanglana ang lokal nga git.
Ug dili kinahanglan si Maven.
Ug dili nimo kinahanglan nga maghimo usa ka sulud nga imahe gamit ang imong mga kamot.
Ug dili nimo kinahanglan pangitaon ang bisan unsang repository sa mga imahe sa sulud.
Ug dili kinahanglan nga mag-install usa ka ingress controller.
Ug dili nimo kinahanglan nga i-configure ang ingress usab.

Nakasabot ka, di ba? Sa pag-deploy ug pagpadagan sa among aplikasyon sa OpenShift, wala nimo kinahanglana ang bisan unsa sa ibabaw. Ug ang proseso mismo ingon niini.

Lakang 1 - Ilunsad ang imong OpenShift cluster

Gigamit namon ang Code Ready Containers gikan sa Red Hat, nga sa tinuud parehas nga Minikube, apan adunay usa ka bug-os nga single-node nga Openshift cluster.

crc start

Lakang 2 – Paghimo ug pag-deploy sa aplikasyon sa OpenShift cluster

Niini nga lakang nga ang kayano ug kasayon ​​​​sa OpenShift gipadayag sa tanan nga himaya niini. Sama sa tanan nga mga distribusyon sa Kubernetes, kami adunay daghang mga paagi sa pagpadagan sa usa ka aplikasyon sa usa ka cluster. Ug, sama sa kaso sa KUK, gipili namon ang pinakasimple.

Ang OpenShift kanunay nga gitukod isip usa ka plataporma alang sa paghimo ug pagpadagan sa mga containerized nga aplikasyon. Ang pagtukod sa mga sudlanan kanunay nga hinungdanon nga bahin sa kini nga plataporma, busa adunay usa ka tonelada nga dugang nga mga kapanguhaan sa Kubernetes alang sa mga may kalabutan nga buluhaton.

Atong gamiton ang OpenShift's Source 2 Image (S2I) nga proseso, nga adunay daghang lain-laing mga paagi sa pagkuha sa atong tinubdan (code o binaries) ug himoon kini nga usa ka containerized nga hulagway nga nagdagan sa OpenShift cluster.

Aron mahimo kini kinahanglan namon ang duha ka butang:

  • Ang among source code naa sa git repository
  • Imahe sa magtutukod nga gibase sa kung diin himuon ang pagtukod.

Adunay daghang ingon nga mga imahe nga gipadayon sa Red Hat ug sa lebel sa komunidad, ug gamiton namon ang imahe sa OpenJDK, maayo, tungod kay nagtukod ako usa ka aplikasyon sa Java.

Mahimo nimong ipadagan ang S2I build gikan sa OpenShift Developer graphical console ug gikan sa command line. Gamiton namo ang bag-ong-app nga sugo, nga isulti niini kung asa makuha ang imahe sa magtutukod ug ang among source code.

Pasayloa OpenShift, wala ka namo gipasalamatan ug gipasagdan ka

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

Mao na, ang among aplikasyon gihimo. Sa pagbuhat niini, ang proseso sa S2I mibuhat sa mosunod nga mga butang:

  • Naghimo usa ka service build-pod alang sa tanan nga mga butang nga may kalabotan sa pagtukod sa aplikasyon.
  • Gihimo ang OpenShift Build config.
  • Gi-download nako ang imahe sa magtutukod sa internal nga OpenShift docker registry.
  • Gi-clone ang "Hello World" sa lokal nga repositoryo.
  • Nakita nako nga adunay usa ka maven pom didto, mao nga gi-compile nako ang aplikasyon gamit ang maven.
  • Naghimo usa ka bag-ong imahe sa sulud nga adunay sulud nga aplikasyon sa Java ug gibutang kini nga imahe sa rehistro sa sulud sa sulud.
  • Gihimo ang Kubernetes Deployment nga adunay mga detalye alang sa pod, serbisyo, ug uban pa.
  • Nagsugod ko sa pag-deploy sa container image.
  • Gikuha ang service build-pod.

Adunay daghan niini nga lista, apan ang nag-unang butang mao nga ang tibuok nga pagtukod mahitabo lamang sa sulod sa OpenShift, ang internal nga Docker registry anaa sa sulod sa OpenShift, ug ang proseso sa pagtukod nagmugna sa tanan nga mga sangkap sa Kubernetes ug gipadagan kini sa cluster.

Kung biswal nimong gimonitor ang paglansad sa S2I sa console, imong makita kung giunsa ang paglansad sa build pod kung nahuman na ang pagtukod.

Pasayloa OpenShift, wala ka namo gipasalamatan ug gipasagdan ka

Karon atong tan-awon ang builder pod logs: una, kini nagpakita kung giunsa pagbuhat sa maven ang trabaho niini ug nag-download sa mga dependency sa pagtukod sa atong java application.

Pasayloa OpenShift, wala ka namo gipasalamatan ug gipasagdan ka

Human makompleto ang pagtukod sa maven, ang pagtukod sa imahen sa sudlanan gisugdan, ug dayon kini nga gitukod nga hulagway gipadala ngadto sa internal nga repositoryo.

Pasayloa OpenShift, wala ka namo gipasalamatan ug gipasagdan ka

Mao na, kompleto na ang proseso sa pagtukod. Karon atong siguroon nga ang mga pod ug mga serbisyo sa atong aplikasyon nagdagan sa cluster.

oc get service

Pasayloa OpenShift, wala ka namo gipasalamatan ug gipasagdan ka

Mao ra. Ug usa lang ka team. Ang kinahanglan namong buhaton mao ang pagbutyag niini nga serbisyo alang sa pag-access gikan sa gawas.

Lakang 3 - ibutyag ang serbisyo alang sa pag-access gikan sa gawas

Sama sa kaso sa KUC, sa OpenShift nga plataporma ang atong "Hello World" nagkinahanglan usab og usa ka router nga magdirekta sa gawas nga trapiko sa serbisyo sulod sa cluster. Gipasayon ​​kini sa OpenShift. Una, ang HAProxy routing component gi-install sa cluster pinaagi sa default (kini mahimong usbon sa parehas nga NGINX). Ikaduha, adunay mga espesyal ug labi ka ma-configure nga mga kapanguhaan nga gitawag nga Mga Ruta ug nagpahinumdom sa mga butang sa Ingress sa maayo nga mga daan nga Kubernetes (sa tinuud, ang mga Ruta sa OpenShift nakaimpluwensya kaayo sa disenyo sa mga butang nga Ingress, nga magamit na karon sa OpenShift) , apan alang sa among "Hello World" , ug sa halos tanang uban pang mga kaso, ang standard nga Ruta igo na alang kanamo nga walay dugang nga configuration.

Aron makahimo og usa ka routable FQDN para sa "Hello World" (oo, ang OpenShiift adunay kaugalingong DNS alang sa pagruta pinaagi sa mga ngalan sa serbisyo), ibutyag ra namo ang among serbisyo:

Pasayloa OpenShift, wala ka namo gipasalamatan ug gipasagdan ka

oc expose service quarkus-hello-world

Kung tan-awon nimo ang bag-ong gihimo nga Ruta, makit-an nimo ang FQDN ug uban pang impormasyon sa pag-ruta didto:

oc get route

Pasayloa OpenShift, wala ka namo gipasalamatan ug gipasagdan ka

Ug sa katapusan, among gi-access ang among serbisyo gikan sa browser:

Pasayloa OpenShift, wala ka namo gipasalamatan ug gipasagdan ka

Apan karon sayon ​​na kaayo!

Ganahan mi sa Kubernetes ug sa tanan nga gitugot sa teknolohiya nga among buhaton, ug ganahan sab mi sa kayano ug kasayon. Ang Kubernetes gimugna aron sa hilabihan nga pagpasimple sa operasyon sa gipang-apod-apod, scalable nga mga sudlanan, apan ang kayano niini dili na igo aron ibutang ang mga aplikasyon ngadto sa produksyon karon. Dinhi diin nagdula ang OpenShift, nga nagsunod sa mga oras ug naghalad sa mga Kubernetes, nga gitumong sa nag-develop. Daghang paningkamot ang gipuhunan aron ipahiangay ang OpenShift nga plataporma espesipiko alang sa developer, lakip ang paghimo sa mga himan sama sa S2I, ODI, Developer Portal, OpenShift Operator Framework, IDE integration, Developer Catalogues, Helm integration, monitoring ug daghan pa.

Kami nanghinaut nga kini nga artikulo makapaikag ug mapuslanon alang kanimo. Makapangita ka og dugang nga mga kapanguhaan, mga materyales ug uban pang mga butang nga mapuslanon alang sa kalamboan sa OpenShift nga plataporma sa portal Mga Nag-develop sa Red Hat.

Source: www.habr.com

Idugang sa usa ka comment