Pepani, OpenShift, sitinakuyamikireni mokwanira ndipo tinakutengani mopepuka

Cholembachi chinalembedwa chifukwa ogwira ntchito athu anali ndi zokambirana zingapo ndi makasitomala pakupanga mapulogalamu pa Kubernetes komanso zachitukuko chotere pa OpenShift.

Pepani, OpenShift, sitinakuyamikireni mokwanira ndipo tinakutengani mopepuka

Nthawi zambiri timayamba ndi lingaliro lakuti Kubernetes ndi Kubernetes basi, ndipo OpenShift ili kale nsanja ya Kubernetes, monga Microsoft AKS kapena Amazon EKS. Iliyonse mwa nsanjayi ili ndi zabwino zake, zomwe zimayang'ana pa omvera omwe akufuna. Ndipo pambuyo pake, zokambiranazo zikuyenda kale mu kuyerekezera mphamvu ndi zofooka za nsanja zenizeni.

Nthawi zambiri, tidaganiza zolemba izi ndikutulutsa ngati "Mvetserani, zilibe kanthu komwe mumathamangitsira code, pa OpenShift kapena pa AKS, pa EKS, pa Kubernetes, inde pa Kubernetes iliyonse. (tiyeni titchule kuti KUK mwachidule) "Ndizosavuta, apo ndi apo."

Kenako tinakonzekera kutenga "Moni Padziko Lonse" losavuta kwambiri ndikuligwiritsa ntchito kuwonetsa zomwe zili zofala komanso kusiyana kotani pakati pa CMC ndi Red Hat OpenShift Container Platform (pambuyo pake, OCP kapena OpenShift chabe).

Komabe, polemba positiyi, tazindikira kuti takhala tikuzolowera kugwiritsa ntchito OpenShift kotero kuti sitikuzindikira momwe idakulira ndikusandulika kukhala nsanja yodabwitsa yomwe yakhala yochulukirapo kuposa kugawa kwa Kubernetes. Timakonda kutengera kukhwima ndi kuphweka kwa OpenShift mopepuka, kwinaku tikunyalanyaza kukongola kwake.

Nthawi zambiri, nthawi yafika yolapa mwachangu, ndipo tsopano tiyerekeza pang'onopang'ono kutumidwa kwa "Moni World" pa KUK ndi OpenShift, ndipo tidzachita moyenera momwe tingathere (chabwino, kupatula nthawi zina kusonyeza munthu payekha). maganizo pa phunziro). Ngati muli ndi chidwi ndi maganizo mwangwiro subjective pa nkhaniyi, ndiye inu mukhoza kuwerenga apa (EN). Ndipo mu positi iyi tidzakakamira ku zowona ndi zowona zokha.

Magulu

Chifukwa chake, "Moni Dziko" likufunika magulu. Tiyeni tingonena kuti "ayi" kumitambo yapagulu, kuti tisalipire ma seva, zolembetsa, ma network, kusamutsa deta, ndi zina zambiri. Chifukwa chake, timasankha gulu losavuta la node imodzi Minikube (za KUK) ndi Makina Okonzekera Makhalidwe (kwa gulu la OpenShift). Zonse ziwirizi ndizosavuta kukhazikitsa, koma zimafuna zinthu zambiri pa laputopu yanu.

Pepani, OpenShift, sitinakuyamikireni mokwanira ndipo tinakutengani mopepuka

Msonkhano pa KUK-e

Ndiye tiyeni tizipita.

Khwerero 1 - Kumanga Chifaniziro Chathu Chotengera

Tiyeni tiyambe ndikuyika "Moni Padziko Lonse" ku minikube. Izi zidzafuna:

  1. 1. Anaika Docker.
  2. 2. Anaika Git.
  3. 3. Anaika Maven (kwenikweni, polojekitiyi imagwiritsa ntchito mvnw binary, kotero mutha kuchita popanda izo).
  4. 4. Kwenikweni, gwero lokha, i.e. chojambula chosungira github.com/gcolman/quarkus-hello-world.git

Gawo loyamba ndikupanga polojekiti ya Quarkus. Osachita mantha ngati simunagwiritsepo ntchito Quarkus.io - ndizosavuta. Mukungosankha zigawo zomwe mukufuna kugwiritsa ntchito polojekitiyi (RestEasy, Hibernate, Amazon SQS, Camel, etc.), ndiyeno Quarkus mwiniwake, popanda kutenga nawo mbali, amakhazikitsa maven archetype ndikuyika chirichonse pa github. Ndiye kuti, dinani kamodzi pa mbewa - ndipo mwamaliza. Ichi ndichifukwa chake timakonda Quarkus.

Pepani, OpenShift, sitinakuyamikireni mokwanira ndipo tinakutengani mopepuka

Njira yosavuta yopangira "Moni Padziko Lonse" kukhala chithunzi chosungidwa ndikugwiritsa ntchito zowonjezera za quarcus-maven za Docker, zomwe zimagwira ntchito zonse zofunika. Kubwera kwa Quarkus, izi zakhala zophweka komanso zosavuta: onjezani chowonjezera-chithunzi-chojambula-docker ndipo mutha kupanga zithunzi ndi malamulo a maven.

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

Ndipo pomaliza, timapanga chithunzi chathu pogwiritsa ntchito Maven. Zotsatira zake, khodi yathu yoyambira imasandulika kukhala chithunzi chokonzekera, chomwe chimatha kuyendetsedwa kale mu nthawi yoyendetsera chidebe.

Pepani, OpenShift, sitinakuyamikireni mokwanira ndipo tinakutengani mopepuka

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

Izi, ndizo zonse, tsopano mutha kuyendetsa chidebecho ndi docker run command, mutajambula ntchito yathu ku port 8080 kuti ipezeke.

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

Pepani, OpenShift, sitinakuyamikireni mokwanira ndipo tinakutengani mopepuka

Chidebe chikayamba, chomwe chatsala ndikuwunika lamulo la curl kuti ntchito yathu ikuyenda:

Pepani, OpenShift, sitinakuyamikireni mokwanira ndipo tinakutengani mopepuka

Choncho, zonse zimagwira ntchito, ndipo zinali zosavuta komanso zosavuta.

Gawo 2 - Tumizani chidebe chathu kumalo osungira zithunzi

Pakadali pano, chithunzi chomwe tidapanga chimasungidwa m'malo mosungiramo zotengera zathu zapafupi. Ngati tikufuna kugwiritsa ntchito chithunzichi m'malo athu a KUK, ndiye kuti tiyenera kuchiyika m'malo ena. Kubernetes alibe izi, chifukwa chake tidzagwiritsa ntchito dockerhub. Chifukwa, choyamba, ndi chaulere, ndipo chachiwiri, (pafupifupi) aliyense amachita.

Izi ndizosavuta, ndipo ndi akaunti ya dockerhub yokha yomwe ikufunika pano.

Chifukwa chake, timayika dockerhub ndikutumiza chithunzi chathu pamenepo.

Pepani, OpenShift, sitinakuyamikireni mokwanira ndipo tinakutengani mopepuka

Khwerero 3 - Yambani Kubernetes

Pali njira zambiri zopangira kubernetes kasinthidwe kuti tiyendetse "Hello World", koma tigwiritsa ntchito zosavuta, chifukwa ndife anthu otero ...

Choyamba, timayamba gulu la minikube:

minikube start

Khwerero 4 - Kutumiza Chithunzi Chathu Chotengera

Tsopano tikuyenera kusintha kachidindo ndi chithunzi chathu kukhala kubernetes kasinthidwe. Mwanjira ina, tikufuna poto ndi matanthauzidwe otumizira omwe akulozera ku chidebe chathu pa dockerhub. Imodzi mwa njira zosavuta zochitira izi ndikuyendetsa lamulo lopanga deployment lolozera pa chithunzi chathu:

Pepani, OpenShift, sitinakuyamikireni mokwanira ndipo tinakutengani mopepuka

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

Ndi lamulo ili, tidauza COOK wathu kuti apange masinthidwe otumizira, omwe akuyenera kukhala ndi mawonekedwe amtundu wa chidebe chathu. Lamuloli ligwiritsanso ntchito masinthidwe awa pagulu lathu la minikube, ndikupanga kutumiza komwe kutsitsa chidebe chathu ndikuyendetsa poto pagulu.

Khwerero 5 - tsegulani mwayi wautumiki wathu

Tsopano popeza tili ndi chithunzi cha chidebe chomwe chayikidwa, ndi nthawi yoti tiganizire momwe tingakhazikitsire mwayi wopezeka kunja kwa ntchito ya Restful iyi, yomwe, kwenikweni, idakonzedwa mu code yathu.

Pali njira zambiri pano. Mwachitsanzo, mutha kugwiritsa ntchito lamulo lowonekera kuti mupange zokhazokha za Kubernetes monga mautumiki ndi zomaliza. M'malo mwake, izi ndi zomwe tidzachita popereka lamulo lowonetseratu chinthu chathu chotumizira:

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

Tiyeni tikhazikike pa "-type" kusankha kwa lamulo lowonekera kwakanthawi.

Pamene tiwulula ndikupanga zigawo zofunikira kuti tiyendetse ntchito yathu, tifunika, mwa zina, kuti tithe kulumikizana kuchokera kunja kupita ku hello-quarkus service yomwe imakhala mkati mwa netiweki yathu yofotokozedwa ndi mapulogalamu. Ndipo parameter mtundu amatilola kupanga ndi kulumikiza zinthu monga zolemetsa zolemetsa kuti tiyendetse magalimoto ku netiweki imeneyo.

Mwachitsanzo, kulemba type=LoadBalancer, timangoyambitsa basi cloud load balancer kuti tigwirizane ndi gulu lathu la Kubernetes. Izi, zachidziwikire, ndizabwino, koma muyenera kumvetsetsa kuti kusinthika kotereku kumangiriridwa mwamphamvu kumtambo wapagulu ndipo kudzakhala kovuta kwambiri kusamutsa pakati pa zochitika za Kubernetes m'malo osiyanasiyana.

Mu chitsanzo chathu type=NodePort, ndiko kuti, kuyitanira ku ntchito yathu kumapita ndi adilesi ya IP ya node ndi nambala ya doko. Njirayi imakulolani kuti musagwiritse ntchito mitambo yapagulu, koma imafuna njira zingapo zowonjezera. Choyamba, mukufunikira katundu wanu wolemetsa, kotero tidzatumiza NGINX load balancer mu gulu lathu.

Khwerero 6 - Konzani chowongolera katundu

minikube ili ndi zida zingapo zamapulatifomu zomwe zimapangitsa kuti zikhale zosavuta kupanga zida zomwe mukufuna kuti mupeze zakunja, monga olamulira a ingress. Minikube imabwera yodzaza ndi wolamulira wa Nginx ingress, ndipo zomwe tiyenera kuchita ndikuziyambitsa ndikuzikonza.

minikube addons enable ingress

Tsopano, ndi lamulo limodzi lokha, tipanga chowongolera cha Nginx chomwe chidzagwira ntchito mkati mwa gulu lathu la minikube:

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

Khwerero 7 - Konzani ingress

Tsopano tikufunika kukonza wowongolera wa Nginx kuti avomereze zopempha za hello-quarkus.

Pepani, OpenShift, sitinakuyamikireni mokwanira ndipo tinakutengani mopepuka

Pepani, OpenShift, sitinakuyamikireni mokwanira ndipo tinakutengani mopepuka

Ndipo potsiriza, tiyenera kugwiritsa ntchito kasinthidwe.

Pepani, OpenShift, sitinakuyamikireni mokwanira ndipo tinakutengani mopepuka

kubectl apply -f ingress.yml

Pepani, OpenShift, sitinakuyamikireni mokwanira ndipo tinakutengani mopepuka

Popeza tikuchita zonsezi pamakina athu, timangowonjezera adilesi yathu ya IP ku fayilo / etc/hosts kuti tiwongolere zopempha za http ku minikube yathu ku NGINX load balancer.

192.168.99.100 hello-quarkus.info

Ndizomwezo, tsopano ntchito yathu ya minikube ikupezeka kuchokera kunja kudzera pa Nginx ingress controller.

Pepani, OpenShift, sitinakuyamikireni mokwanira ndipo tinakutengani mopepuka

Chabwino, izo zinali zophweka, chabwino? Kapena osati kwambiri?

Pepani, OpenShift, sitinakuyamikireni mokwanira ndipo tinakutengani mopepuka

Thamangani pa OpenShift (Code Ready Containers)

Ndipo tsopano tiyeni tiwone momwe zonse zimachitikira pa Red Hat OpenShift Container Platform (OCP).

Monga momwe zilili ndi minikube, timasankha chiwembu chokhala ndi gulu limodzi la OpenShift mu mawonekedwe a Code Ready Containers (CRC). Imatchedwa minishift ndipo idakhazikitsidwa ndi OpenShift Origin projekiti, koma tsopano ndi CRC ndipo idamangidwa pa Red Hat's OpenShift Container Platform.

Pano, pepani, sitingachitire mwina koma kunena kuti: "OpenShift ndiyabwino!"

Poyambirira, tidaganiza zolemba kuti chitukuko pa OpenShift sichosiyana ndi chitukuko cha Kubernetes. Ndipo zoona zake n’zakuti ndi mmene zilili. Koma polemba positiyi, tidakumbukira mayendedwe angati osafunikira omwe muyenera kupanga mukakhala mulibe OpenShift, chifukwa chake, ndizokongola. Timakonda kuti zinthu zikhale zosavuta, ndipo ndizosavuta kuyika ndikuyendetsa chitsanzo chathu pa OpenShift poyerekeza ndi minikube ndizomwe zidatilimbikitsa kulemba izi.

Tiyeni tidutse ndondomekoyi ndikuwona zomwe tikuyenera kuchita.

Chifukwa chake mu chitsanzo cha minikube, tidayamba ndi Docker… Dikirani, sitikufunanso Docker kuyikanso pamakina.

Ndipo sitifuna git yakomweko.
Ndipo Maven sikufunika.
Ndipo simuyenera kupanga chithunzi cha chidebe ndi dzanja.
Ndipo simuyenera kuyang'ana malo aliwonse azithunzi zachidebe.
Ndipo simuyenera kukhazikitsa chowongolera cha ingress.
Ndipo simuyeneranso kukonza ingress.

Kodi mukumvetsetsa? Kuti tigwiritse ntchito ndikuyendetsa pulogalamu yathu pa OpenShift, palibe chomwe chili pamwambapa chomwe chikufunika. Ndipo ndondomeko yokha ili motere.

Khwerero 1 - Kuyambitsa Gulu Lanu la OpenShift

Timagwiritsa ntchito Code Ready Containers kuchokera ku Red Hat, yomwe ili yofanana ndi Minikube, koma yokhala ndi gulu limodzi la Openshift lathunthu.

crc start

Khwerero 2 - Pangani ndi Kutumiza Ntchito ku OpenShift Cluster

Apa ndipamene kuphweka ndi kuphweka kwa OpenShift kumadziwonetsera mu ulemerero wake wonse. Monga momwe zimagawira Kubernetes, tili ndi njira zambiri zoyendetsera ntchito pamagulu. Ndipo, monga momwe zilili ndi KUK, timasankha chosavuta kwambiri.

OpenShift yakhala ikumangidwa ngati nsanja yomangira ndikuyendetsa mapulogalamu okhala ndi zida. Zotengera zomanga nthawi zonse zakhala gawo lofunikira papulatifomu, chifukwa chake pali zinthu zambiri zowonjezera za Kubernetes pazantchito zofananira.

Tikhala tikugwiritsa ntchito njira ya OpenShift's Source 2 Image (S2I), yomwe ili ndi njira zingapo zotengera gwero lathu (ma code kapena binaries) ndikusandutsa chithunzi chokhala ndi zingwe zomwe zimayenda pagulu la OpenShift.

Kuti tichite izi, tikufuna zinthu ziwiri:

  • Nambala yathu yoyambira mu git repository
  • Womanga-chithunzi, kutengera zomwe msonkhano udzachitike.

Pali zithunzi zambiri zotere, zosungidwa ndi Red Hat ndi anthu ammudzi, ndipo tidzagwiritsa ntchito chithunzi cha OpenJDK, chabwino, popeza ndikupanga Java application.

Mutha kuyendetsa S2I yomanga zonse kuchokera ku OpenShift Developer graphical console komanso kuchokera pamzere wamalamulo. Tigwiritsa ntchito lamulo latsopano la pulogalamu, ndikuwuza komwe tingapeze chithunzi cha omanga ndi code yathu yoyambira.

Pepani, OpenShift, sitinakuyamikireni mokwanira ndipo tinakutengani mopepuka

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

Ndizo, ntchito yathu idapangidwa. Pochita izi, njira ya S2I idachita izi:

  • Adapanga zomanga zamitundu yonse zokhudzana ndi kupanga pulogalamuyi.
  • Adapanga OpenShift Build config.
  • Ndidatsitsa chithunzi cha omanga ku registry yamkati ya OpenShift docker.
  • Adapangidwa "Moni Padziko Lonse" kumalo osungira kwanuko.
  • Ndinaona kuti munali maven pom mmenemo ndipo ndinapanga app ndi maven.
  • Adapanga chithunzi chatsopano chokhala ndi pulogalamu ya Java yophatikizidwa ndikuyika chithunzichi mu registry yamkati yamkati.
  • Adapanga Kubernetes Deployment yokhala ndi mawonekedwe a pod, service, etc.
  • Anayambitsa chithunzi cha deploy container.
  • Yachotsedwa ntchito build-pod.

Pali zambiri pamndandandawu, koma chachikulu ndikuti kumanga konse kumachitika mkati mwa OpenShift, registry yamkati ya Docker ili mkati mwa OpenShift, ndipo njira yomanga imapanga zigawo zonse za Kubernetes ndikuziyendetsa pagulu.

Ngati mukuwona kukhazikitsidwa kwa S2I mu kontrakitala, mutha kuwona momwe ma pod amayambira pakumanga.

Pepani, OpenShift, sitinakuyamikireni mokwanira ndipo tinakutengani mopepuka

Ndipo tsopano tiyeni tiwone zipika za omanga pod: choyamba, pamenepo mutha kuwona momwe maven amagwirira ntchito yake ndikutsitsa kudalira kuti timange pulogalamu yathu ya java.

Pepani, OpenShift, sitinakuyamikireni mokwanira ndipo tinakutengani mopepuka

Kumanga kwa maven kukamalizidwa, kumangidwa kwa chidebecho kumayambika, ndiyeno chithunzi chomangidwachi chimatumizidwa kumalo osungira mkati.

Pepani, OpenShift, sitinakuyamikireni mokwanira ndipo tinakutengani mopepuka

Chilichonse, ntchito yosonkhanitsa yatsirizidwa. Tsopano tiyeni tiwonetsetse kuti ma pod ndi ntchito za pulogalamu yathu zayamba mgulu.

oc get service

Pepani, OpenShift, sitinakuyamikireni mokwanira ndipo tinakutengani mopepuka

Ndizomwezo. Ndipo pali gulu limodzi lokha. Zomwe tikuyenera kuchita ndikuwulula izi kuti zitheke.

Khwerero 3 - yambitsani ntchitoyo kuti iwonekere kuchokera kunja

Monga momwe zilili ndi KUK, pa OpenShift nsanja, "Hello World" yathu ikufunikanso rauta kuti iwongolere magalimoto akunja ku ntchito mkati mwa tsango. Mu OpenShift izi zimapangitsa kuti zikhale zosavuta. Choyamba, gawo la HAProxy routing limayikidwa mgulu mwachisawawa (litha kusinthidwa kukhala NGINX yomweyo). Kachiwiri, pali zida zapadera komanso zosinthika kwambiri zomwe zimatchedwa Routes, zomwe zimakumbutsa zinthu za Ingress mu Kubernetes zakale (makamaka, Njira za OpenShift zidakhudza kwambiri mapangidwe azinthu za Ingress, zomwe zitha kugwiritsidwa ntchito ku OpenShift) , koma "Moni wathu" World", ndipo pafupifupi nthawi zina zonse, Njira yokhazikika ndiyokwanira kwa ife popanda kukonzanso kwina.

Kuti mupange FQDN yosinthika ya "Moni Padziko Lonse" (inde, OpenShiift ili ndi DNS yake yoyendetsera ndi mayina a mautumiki), timangowulula ntchito yathu:

Pepani, OpenShift, sitinakuyamikireni mokwanira ndipo tinakutengani mopepuka

oc expose service quarkus-hello-world

Ngati muyang'ana Njira yomwe yangopangidwa kumene, ndiye kuti mutha kupeza FQDN ndi zina zowongolera pamenepo:

oc get route

Pepani, OpenShift, sitinakuyamikireni mokwanira ndipo tinakutengani mopepuka

Ndipo potsiriza, timapeza ntchito yathu kuchokera pa msakatuli:

Pepani, OpenShift, sitinakuyamikireni mokwanira ndipo tinakutengani mopepuka

Koma tsopano zinali zosavuta kwenikweni!

Timakonda Kubernetes ndi chilichonse chomwe ukadaulo uwu umakupatsani mwayi kuti muchite, komanso timakonda kuphweka komanso kupepuka. Kubernetes idapangidwa kuti izipangitsa kuti zotengera zogawika, zowopsa zikhale zosavuta kugwiritsa ntchito, koma kuphweka kwake sikulinso kokwanira kupangitsa kuti mapulogalamu apangidwe lero. Apa ndipamene OpenShift imayamba kuseweredwa, mogwirizana ndi nthawi ndikupereka Kubernetes wopanga mapulogalamu. Khama lalikulu layikidwa kuti ligwirizane ndi nsanja ya OpenShift makamaka kwa wopanga mapulogalamu, kuphatikiza kupanga zida monga S2I, ODI, Developer Portal, OpenShift Operator Framework, kuphatikiza kwa IDE, Ma Catalogs Opanga, kuphatikiza Helm, kuyang'anira, ndi zina zambiri.

Tikukhulupirira kuti nkhaniyi inali yosangalatsa komanso yothandiza kwa inu. Ndipo mutha kupeza zowonjezera, zida ndi zinthu zina zothandiza pakukulitsa pa nsanja ya OpenShift pa portal Opanga Chipewa Chofiira.

Source: www.habr.com

Kuwonjezera ndemanga