Nyuwun pangapunten, OpenShift, kita ora cukup ngormati sampeyan lan njupuk sampeyan kanggo diwenehake

Kiriman iki ditulis amarga staf kita duwe sawetara obrolan karo klien babagan ngembangake aplikasi ing Kubernetes lan spesifik pangembangan kasebut ing OpenShift.

Nyuwun pangapunten, OpenShift, kita ora cukup ngormati sampeyan lan njupuk sampeyan kanggo diwenehake

Kita biasane miwiti karo tesis yen Kubernetes mung Kubernetes, lan OpenShift wis dadi platform Kubernetes, kaya Microsoft AKS utawa Amazon EKS. Saben platform kasebut duwe kaluwihan dhewe, fokus ing target pamirsa tartamtu. Lan sawise iku, obrolan wis mili menyang comparison saka kekiyatan lan kelemahane platform tartamtu.

UmumΓ©, kita mikir nulis kiriman iki kanthi output kaya "Ngrungokake, ora masalah ing ngendi sampeyan mbukak kode kasebut, ing OpenShift utawa ing AKS, ing EKS, ing sawetara Kubernetes khusus, ya ing Kubernetes apa wae. (sing jenenge KUK) "Iku pancen prasaja, ana lan ana."

Banjur kita ngrancang njupuk "Hello World" sing paling gampang lan digunakake kanggo nuduhake apa sing umum lan apa bedane antarane CMC lan Red Hat OpenShift Container Platform (sabanjurΓ©, OCP utawa mung OpenShift).

Nanging, sajrone nulis kiriman iki, kita ngerti yen kita wis biasa nggunakake OpenShift, mula kita ora ngerti kepiye carane berkembang lan dadi platform sing luar biasa sing wis dadi luwih saka distribusi Kubernetes. Kita cenderung nganggep kedewasaan lan kesederhanaan OpenShift, nalika ora ndeleng keagungane.

UmumΓ©, wektu wis teka kanggo mratobat sing aktif, lan saiki kita bakal mbandhingake komisioning "Hello World" kita ing KUK lan OpenShift, lan kita bakal nindakake kanthi objektif sabisa (uga, kajaba kadhangkala nuduhake pribadi. sikap kanggo subyek). Yen sampeyan kasengsem ing pendapat murni subyektif ing masalah iki, sampeyan bisa maca kene (EN). Lan ing kirim iki kita bakal tetep ing kasunyatan lan mung kasunyatan.

Kluster

Dadi, "Hello World" kita butuh kluster. Ayo ngomong "ora" menyang awan umum, supaya ora mbayar server, registri, jaringan, transfer data, lsp. Patut, kita milih kluster siji-simpul prasaja ing Minikube (kanggo KUK) lan Wadah Siap Kode (kanggo kluster OpenShift). Kaloro opsi kasebut gampang banget kanggo nginstal, nanging mbutuhake sumber daya sing akeh banget ing laptop sampeyan.

Nyuwun pangapunten, OpenShift, kita ora cukup ngormati sampeyan lan njupuk sampeyan kanggo diwenehake

Majelis ing KUK-e

Dadi ayo lunga.

Langkah 1 - Nggawe Gambar Wadah Kita

Ayo diwiwiti kanthi nggunakake "Hello World" menyang minikube. Iki bakal mbutuhake:

  1. 1. Diinstal Docker.
  2. 2. Diinstal Git.
  3. 3. Maven sing diinstal (bener, proyek iki nggunakake binar mvnw, supaya sampeyan bisa nindakake tanpa).
  4. 4. Bener, sumbere dhewe, yaiku. klone gudang github.com/gcolman/quarkus-hello-world.git

Langkah pisanan yaiku nggawe proyek Quarkus. Aja wedi yen sampeyan durung tau nggunakake Quarkus.io - iku gampang. Sampeyan mung milih komponen sing pengin digunakake ing project (RestEasy, Hibernate, Amazon SQS, Camel, etc.), banjur Quarkus dhewe, tanpa partisipasi Panjenengan, nyetel archetype maven lan sijine kabeh ing github. Sing, secara harfiah siji klik mouse - lan sampeyan wis rampung. Mulane kita tresna marang Quarkus.

Nyuwun pangapunten, OpenShift, kita ora cukup ngormati sampeyan lan njupuk sampeyan kanggo diwenehake

Cara paling gampang kanggo mbangun "Hello World" dadi gambar sing dikontainer yaiku nggunakake ekstensi quarkus-maven kanggo Docker, sing bakal nindakake kabeh pakaryan sing dibutuhake. Kanthi tekane Quarkus, iki dadi gampang banget lan gampang: tambahake ekstensi container-image-docker lan sampeyan bisa nggawe gambar nganggo perintah maven.

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

Lan pungkasanipun, kita mbangun gambar kita nggunakake Maven. AkibatΓ©, kode sumber kita dadi gambar wadhah sing wis siap, sing wis bisa ditindakake ing runtime wadhah.

Nyuwun pangapunten, OpenShift, kita ora cukup ngormati sampeyan lan njupuk sampeyan kanggo diwenehake

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

Sing, nyatane, kabeh, saiki sampeyan bisa mbukak wadhah nganggo perintah docker run, kanthi peta layanan kita menyang port 8080 supaya bisa diakses.

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

Nyuwun pangapunten, OpenShift, kita ora cukup ngormati sampeyan lan njupuk sampeyan kanggo diwenehake

Sawise conto wadhah wis diwiwiti, sing isih ana yaiku mriksa nganggo perintah curl yen layanan kita mlaku:

Nyuwun pangapunten, OpenShift, kita ora cukup ngormati sampeyan lan njupuk sampeyan kanggo diwenehake

Dadi, kabeh bisa digunakake, lan pancen gampang lan gampang.

Langkah 2 - Kirim wadhah kita menyang repositori gambar wadhah

Saiki, gambar sing digawe disimpen sacara lokal, ing panyimpenan wadhah lokal. Yen kita pengin nggunakake gambar iki ing lingkungan KUK kita, banjur kita kudu sijine ing sawetara repositori liyane. Kubernetes ora duwe fitur kasebut, mula kita bakal nggunakake dockerhub. Amarga, pisanan, gratis, lan nomer loro, (meh) kabeh wong nindakake.

Iki uga gampang banget, lan mung akun dockerhub sing dibutuhake ing kene.

Dadi, kita nginstal dockerhub lan ngirim gambar ing kana.

Nyuwun pangapunten, OpenShift, kita ora cukup ngormati sampeyan lan njupuk sampeyan kanggo diwenehake

Langkah 3 - Miwiti Kubernetes

Ana akeh cara kanggo nggabungake konfigurasi kubernetes kanggo mbukak "Hello World", nanging kita bakal nggunakake sing paling gampang, amarga kita iki wong ...

Pisanan, kita miwiti kluster minikube:

minikube start

Langkah 4 - Nyebarake Gambar Wadah Kita

Saiki kita kudu ngowahi kode lan gambar wadhah menyang konfigurasi kubernetes. Kanthi tembung liyane, kita butuh pod lan definisi penyebaran sing nuduhake gambar wadhah kita ing dockerhub. Salah sawijining cara sing paling gampang kanggo nindakake iki yaiku mbukak printah panyebaran nggawe sing nuduhake gambar kita:

Nyuwun pangapunten, OpenShift, kita ora cukup ngormati sampeyan lan njupuk sampeyan kanggo diwenehake

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

Kanthi printah iki, kita ngandhani COOK kanggo nggawe konfigurasi penyebaran, sing kudu ngemot spesifikasi pod kanggo gambar wadhah. Printah iki uga bakal aplikasi konfigurasi iki kanggo kluster minikube, lan nggawe panyebaran sing bakal ndownload gambar wadhah lan mbukak pod ing kluster.

Langkah 5 - mbukak akses menyang layanan kita

Saiki kita duwe gambar wadhah sing disebarake, wektune kanggo mikir babagan carane ngatur akses eksternal menyang layanan Restful iki, sing, nyatane, wis diprogram ing kode kita.

Ana akeh cara ing kene. Contone, sampeyan bisa nggunakake printah ekspos kanggo otomatis nggawe komponen Kubernetes cocok kayata layanan lan endpoints. Bener, iki sing bakal ditindakake kanthi nglakokake perintah ekspos kanggo obyek panyebaran:

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

Ayo dadi manggon ing "-type" pilihan saka printah mbabarake kanggo wayahe.

Nalika kita mbukak lan nggawe komponen sing dibutuhake kanggo nglakokake layanan, kita kudu, antara liya, supaya bisa nyambung saka njaba menyang layanan hello-quarkus sing ana ing jaringan sing ditetepake piranti lunak. Lan parameter jinis ngidini kita nggawe lan nyambungake kaya load balancer kanggo nuntun lalu lintas menyang jaringan kasebut.

Contone, nulis tipe=LoadBalancer, kita kanthi otomatis miwiti imbangan beban awan umum kanggo nyambung menyang kluster Kubernetes. Iki, mesthi, apik banget, nanging sampeyan kudu ngerti manawa konfigurasi kasebut bakal diikat kanthi rapet menyang awan umum tartamtu lan bakal luwih angel kanggo nransfer antarane conto Kubernetes ing lingkungan sing beda.

Ing conto kita jinis = NodePort, yaiku, telpon menyang layanan kita liwat alamat IP simpul lan nomer port. Opsi iki ngidini sampeyan ora nggunakake awan umum, nanging mbutuhake sawetara langkah tambahan. Pisanan, sampeyan butuh load balancer dhewe, supaya kita bakal masang NGINX load balancer ing kluster kita.

Langkah 6 - Nggawe imbangan beban

minikube duwe sawetara fitur platform sing nggawe gampang nggawe komponen sing dibutuhake kanggo akses eksternal, kayata pengontrol ingress. Minikube dilengkapi karo pengontrol ingress Nginx, lan sing kudu ditindakake yaiku ngaktifake lan ngatur.

minikube addons enable ingress

Saiki, kanthi mung siji prentah, kita bakal nggawe pengontrol ingress Nginx sing bisa digunakake ing kluster minikube:

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

Langkah 7 - Nggawe ingress

Saiki kita kudu ngonfigurasi pengontrol ingress Nginx kanggo nampa panjalukan hello-quarkus.

Nyuwun pangapunten, OpenShift, kita ora cukup ngormati sampeyan lan njupuk sampeyan kanggo diwenehake

Nyuwun pangapunten, OpenShift, kita ora cukup ngormati sampeyan lan njupuk sampeyan kanggo diwenehake

Lan pungkasane, kita kudu ngetrapake konfigurasi iki.

Nyuwun pangapunten, OpenShift, kita ora cukup ngormati sampeyan lan njupuk sampeyan kanggo diwenehake

kubectl apply -f ingress.yml

Nyuwun pangapunten, OpenShift, kita ora cukup ngormati sampeyan lan njupuk sampeyan kanggo diwenehake

Amarga kita nindakake kabeh iki ing mesin kita dhewe, kita mung nambah alamat IP simpul menyang file / etc / hosts kanggo ngarahake panjalukan http menyang minikube menyang penyeimbang beban NGINX.

192.168.99.100 hello-quarkus.info

Mekaten, saiki layanan minikube kasedhiya saka njaba liwat pengontrol ingress Nginx.

Nyuwun pangapunten, OpenShift, kita ora cukup ngormati sampeyan lan njupuk sampeyan kanggo diwenehake

Inggih, iku gampang, ta? Utawa ora dadi luwih?

Nyuwun pangapunten, OpenShift, kita ora cukup ngormati sampeyan lan njupuk sampeyan kanggo diwenehake

Mbukak ing OpenShift (Code Ready Containers)

Lan saiki ayo ndeleng kepiye kabeh rampung ing Red Hat OpenShift Container Platform (OCP).

Kaya ing kasus minikube, kita milih skema kanthi kluster OpenShift siji-node ing wangun Code Ready Containers (CRC). Biyen diarani minishift lan adhedhasar proyek OpenShift Origin, nanging saiki dadi CRC lan dibangun ing Red Hat's OpenShift Container Platform.

Ing kene, nuwun sewu, kita ora bisa ngomong: "OpenShift apik banget!"

Kaping pisanan, kita mikir nulis manawa pangembangan ing OpenShift ora beda karo pangembangan ing Kubernetes. Lan nyatane, kaya ngono. Nanging nalika nulis kiriman iki, kita ngelingi pirang-pirang gerakan sing ora perlu sing kudu ditindakake nalika sampeyan ora duwe OpenShift, lan mulane, maneh, iku ayu. Kita seneng banget, lan sepira gampang kanggo nyebarake lan mbukak conto ing OpenShift dibandhingake karo minikube, sing menehi inspirasi kanggo nulis kiriman iki.

Ayo mlaku liwat proses lan ndeleng apa sing kudu ditindakake.

Dadi ing conto minikube, kita miwiti karo Docker… Enteni, kita ora perlu Docker diinstal ing mesin maneh.

Lan kita ora butuh git lokal.
Lan Maven ora dibutuhake.
Lan sampeyan ora kudu nggawe gambar wadhah kanthi tangan.
Lan sampeyan ora kudu golek repositori gambar wadhah.
Lan sampeyan ora perlu nginstal pengontrol ingress.
Lan sampeyan uga ora perlu ngatur ingress.

Ngerti ta? Kanggo nyebarake lan mbukak aplikasi kita ing OpenShift, ora ana sing dibutuhake ing ndhuwur. Lan prosese dhewe kaya ing ngisor iki.

Langkah 1 - Miwiti Kluster OpenShift

Kita nggunakake Code Ready Containers saka Red Hat, sing ateges Minikube padha, nanging mung karo cluster Openshift siji-simpul lengkap.

crc start

Langkah 2 - Gawe lan Pasang Aplikasi menyang Kluster OpenShift

Ing langkah iki, kesederhanaan lan penak OpenShift katon ing kabeh kamulyan. Kaya kabeh distribusi Kubernetes, kita duwe akeh cara kanggo mbukak aplikasi ing kluster. Lan, kaya ing kasus KUK, kita khusus milih sing paling gampang.

OpenShift wis mesthi wis dibangun minangka platform kanggo mbangun lan mbukak aplikasi containerized. Wadhah bangunan mesthi dadi bagean integral saka platform iki, mula ana akeh sumber daya Kubernetes tambahan kanggo tugas sing cocog.

Kita bakal nggunakake proses OpenShift's Source 2 Image (S2I), sing nduweni macem-macem cara kanggo njupuk sumber (kode utawa binari) lan ngowahi dadi gambar kontaner sing mlaku ing kluster OpenShift.

Kanggo iki kita butuh rong perkara:

  • Kode sumber kita ing repositori git
  • Builder-gambar, adhedhasar kang DΓ©wan bakal dileksanakake.

Ana akeh gambar kasebut, dikelola dening Red Hat lan komunitas, lan kita bakal nggunakake gambar OpenJDK, uga, amarga aku nggawe aplikasi Java.

Sampeyan bisa mbukak bangunan S2I saka konsol grafis OpenShift Developer lan saka baris printah. Kita bakal nggunakake printah anyar-app, ngandhani ngendi kanggo njaluk gambar builder lan kode sumber kita.

Nyuwun pangapunten, OpenShift, kita ora cukup ngormati sampeyan lan njupuk sampeyan kanggo diwenehake

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

Mekaten, aplikasi kita digawe. Nalika nindakake, proses S2I nindakake perkara ing ngisor iki:

  • Nggawe layanan build-pod kanggo macem-macem perkara sing ana gandhengane karo mbangun aplikasi kasebut.
  • Nggawe konfigurasi OpenShift Build.
  • Aku ndownload gambar pembangun menyang registri docker OpenShift internal.
  • Kloning "Hello World" menyang repositori lokal.
  • Saw ana pom maven ing kono lan supaya nyawiji app karo maven.
  • Nggawe gambar wadhah anyar sing ngemot aplikasi Java sing wis dikompilasi lan sijine gambar iki menyang registri wadhah internal.
  • Nggawe Deployment Kubernetes kanthi spesifikasi kanggo pod, layanan, lsp.
  • Diluncurake gambar wadhah nyebar.
  • Dibusak layanan mbangun-pod.

Ana akeh ing dhaptar iki, nanging sing paling penting yaiku kabeh bangunan ditindakake sacara eksklusif ing OpenShift, registri Docker internal ana ing OpenShift, lan proses mbangun nggawe kabeh komponen Kubernetes lan mbukak ing kluster.

Yen sampeyan ngawasi kanthi visual peluncuran S2I ing konsol, sampeyan bisa ndeleng carane pod mbangun diluncurake sajrone mbangun.

Nyuwun pangapunten, OpenShift, kita ora cukup ngormati sampeyan lan njupuk sampeyan kanggo diwenehake

Lan saiki ayo deleng log pembangun pod: sepisanan, sampeyan bisa ndeleng kepiye maven nindakake tugas lan ngundhuh dependensi kanggo mbangun aplikasi java.

Nyuwun pangapunten, OpenShift, kita ora cukup ngormati sampeyan lan njupuk sampeyan kanggo diwenehake

Sawise mbangun maven rampung, mbangun gambar wadhah diwiwiti, banjur gambar sing dibangun iki dikirim menyang panyimpenan internal.

Nyuwun pangapunten, OpenShift, kita ora cukup ngormati sampeyan lan njupuk sampeyan kanggo diwenehake

Kabeh, proses perakitan wis rampung. Saiki ayo priksa manawa pod lan layanan aplikasi kita wis diwiwiti ing kluster.

oc get service

Nyuwun pangapunten, OpenShift, kita ora cukup ngormati sampeyan lan njupuk sampeyan kanggo diwenehake

Mekaten. Lan mung ana siji tim. Kabeh sing kudu kita lakoni yaiku mbukak layanan iki kanggo akses njaba.

Langkah 3 - nggawe layanan mbukak kanggo akses saka njaba

Kaya ing kasus KUK, ing platform OpenShift, "Hello World" kita uga butuh dalan kanggo ngarahake lalu lintas eksternal menyang layanan ing kluster kasebut. OpenShift ndadekake iki gampang banget. Kaping pisanan, komponen routing HAProxy dipasang ing kluster kanthi standar (bisa diganti NGINX sing padha). Kapindho, ana sumber daya khusus lan bisa dikonfigurasi sing disebut Rute, sing kaya obyek Ingress ing Kubernetes lawas sing apik (nyatane, Rute OpenShift duwe pengaruh banget marang desain obyek Ingress, sing saiki bisa digunakake ing OpenShift), nanging kanggo "Halo" World", lan ing meh kabeh kasus liyane, Rute standar cukup kanggo kita tanpa konfigurasi tambahan.

Kanggo nggawe FQDN sing bisa diowahi kanggo "Hello World" (ya, OpenShiift duwe DNS dhewe kanggo nuntun kanthi jeneng layanan), kita mung mbukak layanan kita:

Nyuwun pangapunten, OpenShift, kita ora cukup ngormati sampeyan lan njupuk sampeyan kanggo diwenehake

oc expose service quarkus-hello-world

Yen sampeyan ndeleng Rute sing mentas digawe, sampeyan bisa nemokake FQDN lan informasi rute liyane ing kana:

oc get route

Nyuwun pangapunten, OpenShift, kita ora cukup ngormati sampeyan lan njupuk sampeyan kanggo diwenehake

Lan pungkasane, kita ngakses layanan saka browser:

Nyuwun pangapunten, OpenShift, kita ora cukup ngormati sampeyan lan njupuk sampeyan kanggo diwenehake

Nanging saiki pancen gampang!

We tresna Kubernetes lan kabeh sing teknologi iki ngidini sampeyan nindakake, lan kita uga tresna gamblang lan entheng. Kubernetes dirancang kanggo nggawe kontaner sing disebarake lan bisa diukur kanthi gampang banget kanggo operate, nanging kesederhanaane ora cukup kanggo nggawe aplikasi ing produksi saiki. Iki ngendi OpenShift main, tetep karo wektu lan nawakake Kubernetes pangembang-sentris. Akeh gaweyan wis ditindakake kanggo nggawe platform OpenShift khusus kanggo pangembang, kalebu nggawe alat kayata S2I, ODI, Portal Pangembang, Kerangka Operator OpenShift, integrasi IDE, Katalog Pangembang, integrasi Helm, pemantauan, lan liya-liyane.

Muga-muga artikel iki menarik lan migunani kanggo sampeyan. Lan sampeyan bisa nemokake sumber daya tambahan, bahan lan liyane migunani kanggo berkembang ing platform OpenShift ing portal Pangembang Red Hat.

Source: www.habr.com

Add a comment