Thov txim OpenShift, peb tsis txaus siab rau koj txaus thiab muab koj tso cai

Cov ntawv tshaj tawm no tau sau vim tias peb cov neeg ua haujlwm tau sib tham ntau nrog cov neeg siv khoom txog kev txhim kho daim ntawv thov ntawm Kubernetes thiab qhov tshwj xeeb ntawm kev txhim kho ntawm OpenShift.

Thov txim OpenShift, peb tsis txaus siab rau koj txaus thiab muab koj tso cai

Peb feem ntau pib nrog cov thesis uas Kubernetes tsuas yog Kubernetes xwb, thiab OpenShift twb yog Kubernetes platform, zoo li Microsoft AKS lossis Amazon EKS. Txhua lub platforms muaj nws tus kheej zoo, tsom rau cov neeg tuaj saib tshwj xeeb. Thiab tom qab no, kev sib tham tig los sib piv qhov muaj zog thiab qhov tsis muaj zog ntawm cov platforms tshwj xeeb.

Feem ntau, peb xav txog kev sau cov ntawv no nrog cov lus xaus zoo li "Mloog, nws tsis muaj teeb meem qhov twg yuav khiav cov cai, ntawm OpenShift lossis ntawm AKS, ntawm EKS, ntawm qee qhov kev cai Kubernetes, lossis ntawm Kubernetes dab tsi (rau brevity cia peb hu nws KUK) "Nws yooj yim heev, ob qho tib si nyob ntawd thiab muaj."

Tom qab ntawd peb tau npaj los ua qhov yooj yim tshaj plaws "Nyob Zoo Ntiaj Teb" thiab siv nws qhov piv txwv los qhia tias muaj dab tsi thiab qhov txawv ntawm KUC thiab Red Hat OpenShift Container Platform (tom qab no, OCP lossis tsuas yog OpenShift).

Txawm li cas los xij, thaum peb tau sau cov ntawv no, peb pom tau tias peb tau siv los siv OpenShift ntev heev uas peb tsuas tsis paub tias nws tau loj hlob li cas thiab hloov mus rau hauv lub platform zoo heev uas tau dhau los ua ntau dua li Kubernetes faib. Peb nyiam coj qhov kev loj hlob thiab kev yooj yim ntawm OpenShift kom pom zoo, thiab tsis pom nws qhov ci ntsa iab.

Feem ntau, lub sijhawm tau los txog rau kev hloov siab lees txim, thiab tam sim no peb yuav ua ib kauj ruam piv rau kev ua haujlwm ntawm peb "Nyob Zoo Ntiaj Teb" ntawm KUK thiab ntawm OpenShift, thiab peb yuav ua qhov no raws li qhov ua tau (zoo, tshwj tsis yog qee zaum qhia ib qho. tus kheej tus cwj pwm rau qhov kev kawm). Yog tias koj txaus siab rau lub tswv yim ntshiab ntawm qhov teeb meem no, koj tuaj yeem nyeem nws ntawm no (EN). Thiab nyob rau hauv no ncej peb yuav lo rau qhov tseeb thiab tsuas yog qhov tseeb.

Pawg

Yog li, peb "Nyob Zoo Ntiaj Teb" xav tau pawg. Peb mam li hais tam sim ntawd "tsis muaj" rau cov huab huab, kom tsis txhob them nyiaj rau servers, npe, tes hauj lwm, hloov ntaub ntawv, thiab lwm yam. Raws li, peb xaiv ib qho yooj yim ib-node pawg rau Minikube (rau KUK) thiab Cov Ntawv Npaj Tos (rau OpenShift pawg). Ob qho ntawm cov kev xaiv no yooj yim heev rau nruab, tab sis yuav xav tau ntau cov peev txheej ntawm koj lub laptop.

Thov txim OpenShift, peb tsis txaus siab rau koj txaus thiab muab koj tso cai

Assembly on KUK-e

Yog li cia peb mus.

Kauj Ruam 1 - tsim peb lub thawv duab

Cia peb pib los ntawm kev xa peb "Hello World" rau minikube. Txhawm rau ua qhov no koj yuav xav tau:

  1. 1. Docker ntsia.
  2. 2. Git ntsia.
  3. 3. Nruab Maven (qhov tseeb, qhov project no siv mvnw binary, yog li koj tuaj yeem ua yam tsis muaj nws).
  4. 4. Qhov tseeb, qhov chaw nws tus kheej, i.e. clone chaw cia khoom github.com/gcolman/quarkus-hello-world.git

Thawj kauj ruam yog los tsim ib qhov project Quarkus. Tsis txhob ntshai yog tias koj tsis tau ua haujlwm nrog Quarkus.io - nws yooj yim. Koj tsuas yog xaiv cov khoom uas koj xav siv hauv qhov project (RestEasy, Hibernate, Amazon SQS, Camel, thiab lwm yam), thiab tom qab ntawd Quarkus nws tus kheej, tsis muaj koj txoj kev koom tes, teeb tsa maven archetype thiab tso txhua yam ntawm github. Ntawd yog, lus ib nias ntawm tus nas thiab koj ua tiav. Qhov no yog vim li cas peb nyiam Quarkus.

Thov txim OpenShift, peb tsis txaus siab rau koj txaus thiab muab koj tso cai

Txoj kev yooj yim tshaj plaws los tsim peb "Nyob Zoo Ntiaj Teb" rau hauv lub thawv duab yog siv quarkus-maven txuas ntxiv rau Docker, uas yuav ua txhua yam haujlwm tsim nyog. Nrog rau qhov tshwm sim ntawm Quarkus, qhov no tau dhau los ua ib qho yooj yim thiab yooj yim: ntxiv lub thawv-duab-docker txuas ntxiv thiab koj tuaj yeem tsim cov duab siv maven cov lus txib.

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

Thaum kawg, peb tsim peb cov duab siv Maven. Raws li qhov tshwm sim, peb qhov chaws hloov pauv mus rau hauv lub thawv ntim cov duab uas tuaj yeem ua tau nyob rau hauv lub thawv khiav lub sijhawm ib puag ncig.

Thov txim OpenShift, peb tsis txaus siab rau koj txaus thiab muab koj tso cai

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

Ntawd yog tag nrho, tam sim no koj tuaj yeem pib lub thawv nrog docker khiav cov lus txib, kos npe rau peb cov kev pabcuam rau chaw nres nkoj 8080 kom nws nkag tau.

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

Thov txim OpenShift, peb tsis txaus siab rau koj txaus thiab muab koj tso cai

Tom qab lub thawv ntim tau pib, txhua yam uas tseem tshuav yog los xyuas nrog cov lus txib curl uas peb cov kev pabcuam tau ua haujlwm:

Thov txim OpenShift, peb tsis txaus siab rau koj txaus thiab muab koj tso cai

Yog li txhua yam ua haujlwm thiab nws tau yooj yim thiab yooj yim heev.

Kauj Ruam 2 - xa peb lub thawv rau lub thawv ntim cov duab repository

Txog tam sim no, cov duab peb tsim tau khaws cia hauv zos, hauv peb lub thawv ntim khoom hauv zos. Yog tias peb xav siv cov duab no hauv peb qhov chaw COOK, ces nws yuav tsum muab tso rau hauv qee qhov chaw cia khoom. Kubernetes tsis muaj cov yam ntxwv zoo li no, yog li peb yuav siv dockerhub. Vim tias, thawj zaug, nws yog dawb, thiab qhov thib ob, (yuav luag) txhua tus ua nws.

Qhov no kuj yooj yim heev, thiab txhua yam koj xav tau yog tus account dockerhub.

Yog li, peb nruab dockerhub thiab xa peb cov duab rau ntawd.

Thov txim OpenShift, peb tsis txaus siab rau koj txaus thiab muab koj tso cai

Kauj ruam 3 - tso Kubernetes

Muaj ntau txoj hauv kev los sib sau ua ke kubernetes teeb tsa los khiav peb "Nyob Zoo Ntiaj Teb", tab sis peb yuav siv qhov yooj yim ntawm lawv, qhov ntawd yog qhov peb ...

Ua ntej, cia peb tso lub minikube pawg:

minikube start

Kauj Ruam 4 - xa peb cov duab ntim

Tam sim no peb yuav tsum hloov peb cov lej thiab cov duab ntim rau hauv kubernetes teeb tsa. Hauv lwm lo lus, peb xav tau lub pod thiab xa tawm txhais taw rau peb lub thawv duab ntawm dockerhub. Ib qho ntawm txoj hauv kev yooj yim tshaj plaws los ua qhov no yog khiav cov lus txib tsim xa mus rau peb cov duab:

Thov txim OpenShift, peb tsis txaus siab rau koj txaus thiab muab koj tso cai

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

Nrog rau cov lus txib no peb tau hais rau peb COO los tsim ib qho kev xa tawm, uas yuav tsum muaj cov pod specification rau peb lub thawv duab. Cov lus txib no tseem yuav siv qhov kev teeb tsa no rau peb lub minikube pawg, thiab tsim kev xa tawm uas yuav rub tawm peb lub thawv duab thiab tso lub pod hauv pawg.

Kauj Ruam 5 - qhib kev nkag mus rau peb qhov kev pabcuam

Tam sim no peb muaj cov duab ntim khoom siv, nws yog lub sijhawm los xav txog yuav ua li cas los teeb tsa kev siv sab nraud rau qhov kev pabcuam Restful, uas, qhov tseeb, yog programmed hauv peb cov cai.

Muaj ntau txoj hauv kev ntawm no. Piv txwv li, koj tuaj yeem siv cov lus qhia tawm kom tau txais cov khoom tsim nyog Kubernetes, xws li cov kev pabcuam thiab cov ntsiab lus kawg. Qhov tseeb, qhov no yog qhov peb yuav ua los ntawm kev ua tiav cov lus txib expose rau peb cov khoom xa tawm:

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

Cia peb siv sijhawm ib pliag los saib qhov "-type" kev xaiv ntawm cov lus qhia nthuav tawm.

Thaum peb nthuav tawm thiab tsim cov khoom tsim nyog los khiav peb cov kev pabcuam, peb, ntawm lwm yam, yuav tsum muaj peev xwm txuas tau los ntawm sab nraud mus rau qhov kev pabcuam nyob zoo-quarkus, uas nyob hauv peb lub software-txhais network. Thiab parameter hom tso cai rau peb los tsim thiab txuas tej yam xws li load balancers rau txoj kev tsheb mus rau lub network no.

Piv txwv li, los ntawm kev sau ntawv type=LoadBalancer, peb cia li muab cov khoom sib npaug hauv cov huab huab rau pej xeem txuas rau peb cov Kubernetes pawg. Qhov no, tau kawg, yog qhov zoo, tab sis koj yuav tsum nkag siab tias qhov kev teeb tsa zoo li no yuav raug khi nruj rau cov huab huab tshwj xeeb thiab yuav nyuaj dua rau kev hloov pauv ntawm Kubernetes piv txwv hauv ntau qhov chaw.

Hauv peb qhov piv txwv type=NodePort, uas yog, peb cov kev pabcuam tau nkag los ntawm node tus IP chaw nyob thiab tus lej chaw nres nkoj. Qhov kev xaiv no tso cai rau koj kom tsis txhob siv cov huab huab, tab sis yuav tsum muaj ntau cov kauj ruam ntxiv. Ua ntej, koj xav tau koj tus kheej load balancer, yog li peb yuav xa NGINX load balancer hauv peb pawg.

Kauj ruam 6 - nruab ib lub load balancer

minikube muaj ntau lub platform ua haujlwm uas ua rau nws yooj yim dua los tsim cov khoom siv sab nraud, xws li ingress controllers. Minikube los nrog Nginx ingress maub los, thiab txhua yam peb yuav tsum ua yog pab nws thiab teeb tsa nws.

minikube addons enable ingress

Tam sim no peb yuav tsim Nginx ingress controller nrog ib qho lus txib, uas yuav ua haujlwm hauv peb pawg minikube:

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

Kauj Ruam 7 - Kev teeb tsa ingress

Tam sim no peb yuav tsum teeb tsa Nginx ingress controller kom nws lees txais kev thov nyob zoo-quarkus.

Thov txim OpenShift, peb tsis txaus siab rau koj txaus thiab muab koj tso cai

Thov txim OpenShift, peb tsis txaus siab rau koj txaus thiab muab koj tso cai

Thiab thaum kawg, peb yuav tsum siv qhov kev teeb tsa no.

Thov txim OpenShift, peb tsis txaus siab rau koj txaus thiab muab koj tso cai

kubectl apply -f ingress.yml

Thov txim OpenShift, peb tsis txaus siab rau koj txaus thiab muab koj tso cai

Txij li thaum peb tab tom ua txhua yam no ntawm peb lub khoos phis tawj, peb tsuas yog ntxiv peb qhov chaw nyob IP rau /etc/ hosts cov ntaub ntawv kom xa http thov rau peb lub minikube mus rau NGINX load balancer.

192.168.99.100 hello-quarkus.info

Ntawd yog nws, tam sim no peb cov kev pabcuam minikube tuaj yeem nkag mus rau sab nraud los ntawm Nginx ingress controller.

Thov txim OpenShift, peb tsis txaus siab rau koj txaus thiab muab koj tso cai

Zoo, qhov ntawd yog qhov yooj yim, txoj cai? Los tsis ntau?

Thov txim OpenShift, peb tsis txaus siab rau koj txaus thiab muab koj tso cai

Khiav ntawm OpenShift (Code Ready Containers)

Tam sim no cia saib yuav ua li cas tag nrho qhov no ua tiav ntawm Red Hat OpenShift Container Platform (OCP).

Raws li nrog minikube, peb xaiv ib leeg-node OpenShift pawg tsim nyob rau hauv daim ntawv ntawm Code Ready Containers (CRC). Yav dhau los, nws tau hu ua minishift thiab tau ua raws li qhov project OpenShift Keeb Kwm, tab sis tam sim no nws yog CRC thiab tsim los ntawm Red Hat's OpenShift Container Platform.

Ntawm no, thov txim, pab tsis tau tab sis hais tias: "OpenShift zoo heev!"

Thaum pib, peb xav sau tias kev txhim kho ntawm OpenShift tsis txawv ntawm kev txhim kho ntawm Kubernetes. Thiab nyob rau hauv essence qhov no yog li cas nws yog. Tab sis nyob rau hauv tus txheej txheem ntawm kev sau ntawv no, peb nco ntsoov muaj pes tsawg lub zog ntxiv uas koj yuav tsum tau ua thaum koj tsis muaj OpenShift, thiab yog vim li cas, dua, nws zoo heev. Peb hlub nws thaum txhua yam ua tiav yooj yim, thiab yooj yim npaum li cas peb tus qauv yog siv thiab khiav ntawm OpenShift piv rau minikube yog qhov ua rau peb sau cov ntawv no.

Cia peb mus dhau cov txheej txheem thiab saib seb peb yuav tsum ua li cas.

Yog li, hauv qhov piv txwv minikube, peb pib nrog Docker... Tos, peb tsis xav tau Docker ntsia ntawm lub tshuab lawm.

Thiab peb tsis xav tau git hauv zos.
Thiab Maven tsis xav tau.
Thiab koj tsis tas yuav tsim lub thawv duab nrog koj txhais tes.
Thiab koj tsis tas yuav nrhiav ib qho chaw cia khoom ntawm cov duab ntim.
Thiab tsis tas yuav nruab ib qho ingress controller.
Thiab koj tsis tas yuav teeb tsa ingress ib yam.

Koj nkag siab, txoj cai? Txhawm rau xa thiab khiav peb daim ntawv thov ntawm OpenShift, koj tsis xav tau ib qho ntawm cov saum toj no. Thiab cov txheej txheem nws tus kheej zoo li no.

Kauj ruam 1 - Tua tawm koj pawg OpenShift

Peb siv Code Ready Containers los ntawm Red Hat, uas yog qhov tseem ceeb tib yam Minikube, tab sis tsuas yog nrog ib qho tag nrho-node Openshift pawg.

crc start

Kauj ruam 2 - Tsim thiab xa daim ntawv thov mus rau OpenShift pawg

Nws yog ntawm cov kauj ruam no uas qhov yooj yim thiab yooj yim ntawm OpenShift tau tshwm sim nyob rau hauv tag nrho nws lub yeeb koob. Raws li nrog tag nrho Kubernetes kev faib tawm, peb muaj ntau txoj hauv kev los khiav daim ntawv thov hauv ib pawg. Thiab, zoo li hauv KUK, peb tshwj xeeb xaiv qhov yooj yim tshaj plaws.

OpenShift ib txwm tau tsim ua lub platform rau kev tsim thiab khiav cov ntawv thov ntim khoom. Lub tsev ntim khoom ib txwm yog ib feem tseem ceeb ntawm lub platform no, yog li muaj ntau tuj ntawm Kubernetes cov peev txheej ntxiv rau cov haujlwm muaj feem xyuam.

Peb yuav siv OpenShift's Source 2 Image (S2I) txheej txheem, uas muaj ntau txoj hauv kev los coj peb qhov chaw (code lossis binaries) thiab tig nws mus rau hauv cov duab ntim uas khiav ntawm OpenShift pawg.

Txhawm rau ua qhov no peb xav tau ob yam:

  • Peb qhov chaws code yog nyob rau hauv git repository
  • Builder duab nyob rau hauv lub hauv paus ntawm qhov tsim yuav ua.

Muaj ntau cov duab zoo li no tau khaws cia ob qho tib si los ntawm Red Hat thiab hauv zej zog, thiab peb yuav siv cov duab OpenJDK, zoo, txij li kuv tab tom tsim daim ntawv thov Java.

Koj tuaj yeem khiav S2I tsim ob qho tib si los ntawm OpenShift Developer graphical console thiab los ntawm kab hais kom ua. Peb yuav siv cov lus txib tshiab-app, qhia nws qhov twg kom tau txais cov duab tsim thiab peb qhov chaws.

Thov txim OpenShift, peb tsis txaus siab rau koj txaus thiab muab koj tso cai

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

Qhov ntawd yog nws, peb daim ntawv thov raug tsim. Ua li no, tus txheej txheem S2I tau ua cov hauv qab no:

  • Tsim ib qho kev pabcuam tsim-pob rau txhua yam uas cuam tshuam nrog kev tsim daim ntawv thov.
  • Tsim qhov OpenShift Build config.
  • Kuv rub tawm cov duab tsim rau hauv OpenShift docker npe.
  • Cloned "Nyob Zoo Ntiaj Teb" mus rau lub chaw cia khoom hauv zos.
  • Kuv pom tias muaj maven pom nyob ntawd, kuv thiaj sau daim ntawv thov siv maven.
  • Tsim cov duab thawv tshiab uas muaj cov ntawv sau ua Java thiab muab cov duab no tso rau hauv lub thawv sau npe.
  • Tsim Kubernetes Deployment nrog specifications rau pod, kev pab cuam, thiab lwm yam.
  • Kuv pib xa cov duab ntim.
  • Tshem tawm qhov kev pabcuam tsim-pod.

Muaj ntau ntau ntawm daim ntawv teev npe no, tab sis qhov tseem ceeb tshaj plaws yog tias tag nrho cov kev tsim tshwm sim tshwj xeeb hauv OpenShift, cov npe Docker sab hauv yog nyob rau hauv OpenShift, thiab cov txheej txheem tsim tsim tag nrho Kubernetes Cheebtsam thiab khiav lawv hauv pawg.

Yog tias koj pom qhov muag pom kev tshaj tawm ntawm S2I hauv lub console, koj tuaj yeem pom yuav ua li cas lub pob tsim tau pib thaum tsim tiav.

Thov txim OpenShift, peb tsis txaus siab rau koj txaus thiab muab koj tso cai

Tam sim no cia peb saib ntawm cov cav ntoo tsim: ua ntej, nws qhia tau hais tias maven ua nws txoj haujlwm li cas thiab rub tawm cov kev vam meej los tsim peb daim ntawv thov java.

Thov txim OpenShift, peb tsis txaus siab rau koj txaus thiab muab koj tso cai

Tom qab kev tsim maven tiav lawm, kev tsim cov duab ntim tau pib, thiab tom qab ntawd cov duab tsim no raug xa mus rau qhov chaw cia khoom sab hauv.

Thov txim OpenShift, peb tsis txaus siab rau koj txaus thiab muab koj tso cai

Qhov ntawd yog nws, cov txheej txheem tsim ua tiav. Tam sim no cia peb paub tseeb tias cov pods thiab cov kev pabcuam ntawm peb daim ntawv thov tau khiav hauv pawg.

oc get service

Thov txim OpenShift, peb tsis txaus siab rau koj txaus thiab muab koj tso cai

Yog tag nrho. Thiab tsuas yog ib pab neeg xwb. Txhua yam peb tau ua yog nthuav tawm cov kev pabcuam no rau kev nkag los ntawm sab nraud.

Kauj Ruam 3 – nthuav tawm cov kev pabcuam rau kev nkag los ntawm sab nraud

Ib yam li KUC, ntawm OpenShift platform peb "Nyob Zoo Ntiaj Teb" kuj xav tau lub router los coj cov tsheb khiav tawm sab nraud rau cov kev pabcuam hauv pawg. OpenShift ua qhov no yooj yim heev. Ua ntej, HAProxy routing tivthaiv tau nruab rau hauv pawg los ntawm lub neej ntawd (nws tuaj yeem hloov mus rau tib NGINX). Thib ob, muaj cov kev pabcuam tshwj xeeb thiab tsim tau zoo heev hu ua Routes thiab nco txog cov khoom Ingress hauv Kubernetes qub (qhov tseeb, OpenShift's Routes tau cuam tshuam rau kev tsim cov khoom Ingress, uas tam sim no siv tau hauv OpenShift), tab sis rau peb "nyob zoo ntiaj teb" , thiab nyob rau hauv yuav luag txhua lwm yam, tus txheej txheem Route yog txaus rau peb yam tsis muaj configuration ntxiv.

Txhawm rau tsim FQDN routable rau "Nyob Zoo Ntiaj Teb" (yog, OpenShiift muaj nws tus kheej DNS rau routing los ntawm cov npe kev pabcuam), peb tsuas yog nthuav tawm peb cov kev pabcuam:

Thov txim OpenShift, peb tsis txaus siab rau koj txaus thiab muab koj tso cai

oc expose service quarkus-hello-world

Yog tias koj saib txoj kev tsim tshiab, koj tuaj yeem pom FQDN thiab lwm cov ntaub ntawv qhia txog kev nyob ntawd:

oc get route

Thov txim OpenShift, peb tsis txaus siab rau koj txaus thiab muab koj tso cai

Thiab thaum kawg, peb nkag mus rau peb qhov kev pabcuam los ntawm browser:

Thov txim OpenShift, peb tsis txaus siab rau koj txaus thiab muab koj tso cai

Tab sis tam sim no nws yooj yim heev!

Peb hlub Kubernetes thiab txhua yam uas lub tshuab no tso cai rau peb ua, thiab peb kuj nyiam qhov yooj yim thiab yooj yim. Kubernetes tau tsim los ua kom yooj yim heev rau kev ua haujlwm ntawm cov thawv ntim khoom, tab sis nws txoj kev yooj yim tsis txaus los tso cov ntawv thov rau hauv cov khoom siv niaj hnub no. Qhov no yog qhov uas OpenShift los ua si, ua raws li lub sijhawm thiab muab Kubernetes, tsom rau tus tsim tawm. Kev siv zog ntau tau raug nqis peev los tsim kho OpenShift platform tshwj xeeb rau tus tsim tawm, suav nrog kev tsim cov cuab yeej xws li S2I, ODI, Tus Tsim Kho Portal, OpenShift Operator Framework, IDE integration, Developer Catalogues, Helm integration, monitoring and many others.

Peb cia siab tias tsab xov xwm no nthuav thiab muaj txiaj ntsig rau koj. Koj tuaj yeem nrhiav cov peev txheej ntxiv, cov ntaub ntawv thiab lwm yam tseem ceeb rau kev txhim kho ntawm OpenShift platform ntawm lub portal Red Hat Developers.

Tau qhov twg los: www.hab.com

Ntxiv ib saib