ProHoster > Блог > Pagdumala > Pasayloa OpenShift, wala ka namo gipasalamatan ug gipasagdan ka
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.
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.
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. Gi-install ang Docker.
2. Git-instalar.
3. Gi-install nga Maven (sa tinuud, kini nga proyekto naggamit sa mvnw binary, aron mahimo nimo kung wala kini).
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.
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.
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.
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
Human magsugod ang pananglitan sa sudlanan, ang nahabilin mao ang pagsusi sa curl command nga ang among serbisyo nagdagan:
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.
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:
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:
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:
Karon kinahanglan namong i-configure ang Nginx ingress controller aron kini modawat sa mga hangyo sa hello-quarkus.
Ug sa katapusan, kinahanglan natong i-apply kini nga configuration.
kubectl apply -f ingress.yml
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.
Aw, sayon ra kana, di ba? O dili kaayo?
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.
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.
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.
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.
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
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:
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
Ug sa katapusan, among gi-access ang among serbisyo gikan sa browser:
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.