{"id":97254,"date":"2020-10-17T02:42:32","date_gmt":"2020-10-17T00:42:32","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/prosti-openshift-my-nedostatochno-czenili-tebya-i-prinimali-kak-dolzhnoe"},"modified":"2020-10-17T02:42:32","modified_gmt":"2020-10-17T00:42:32","slug":"prosti-openshift-my-nedostatochno-czenili-tebya-i-prinimali-kak-dolzhnoe","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/prosti-openshift-my-nedostatochno-czenili-tebya-i-prinimali-kak-dolzhnoe","title":{"rendered":"Na falenderojm\u00eb, OpenShift, nuk t\u00eb vler\u00ebsuam sa duhej dhe t\u00eb mor\u00ebm si t\u00eb mir\u00ebqen\u00eb","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ky ky \u043f\u043e\u0441\u0442 \u00ebsht\u00eb shkruar sepse punonj\u00ebsit tan\u00eb kan\u00eb pasur shum\u00eb biseda me klient\u00ebt rreth zhvillimit t\u00eb aplikacioneve n\u00eb Kubernetes dhe karakteristikave t\u00eb k\u00ebtij zhvillimi n\u00eb OpenShift.<\/p>\n<p><img decoding=\"async\" alt=\"Na falenderojm\u00eb, OpenShift, nuk t\u00eb vler\u00ebsuam sa duhej dhe t\u00eb mor\u00ebm si t\u00eb mir\u00ebqen\u00eb\" src=\"\/wp-content\/uploads\/2020\/10\/ad447aeb80d3ae56ea4598cd959456de.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNe zakonisht e fillojm\u00eb me tez\u00ebn se Kubernetes \u00ebsht\u00eb thjesht Kubernetes, nd\u00ebrsa OpenShift \u00ebsht\u00eb nj\u00eb platform\u00eb Kubernetes, si Microsoft AKS ose Amazon EKS. \u00c7do nj\u00ebri nga k\u00ebto platforma ka avantazhet e veta, t\u00eb fokusuara n\u00eb audienc\u00ebn p\u00ebrkat\u00ebse. Pas k\u00ebsaj, biseda kalon n\u00eb krahasimin e forcave dhe dob\u00ebsive t\u00eb platformave t\u00eb caktuara.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nN\u00eb p\u00ebrgjith\u00ebsi, mendonim t\u00eb shkruanim k\u00ebt\u00eb post me p\u00ebrfundimin se \"D\u00ebgjoni, nuk ka r\u00ebnd\u00ebsi ku e drejtoni kodin, n\u00eb OpenShift, AKS, EKS, ose ndonj\u00eb Kubernetes tjet\u00ebr, madje n\u00eb \u00e7far\u00ebdo Kubernetes-i,\" <i>(p\u00ebr shkak t\u00eb shkurtimit le t\u00eb th\u00ebrrasim at\u00eb KUK)<\/i> \u2013 \u00ebsht\u00eb e v\u00ebrtet\u00eb thjesht, dhe aty dhe aty.<\/p>\n<p>M\u00eb pas, planifikonim t\u00eb merrnim nj\u00eb \"Hello World\" t\u00eb thjesht\u00eb dhe me shembullin e tij t\u00eb tregojm\u00eb se \u00e7far\u00eb kan\u00eb t\u00eb p\u00ebrbashk\u00ebt dhe \u00e7far\u00eb dallimesh ka midis KUK dhe Red Hat OpenShift Container Platform (n\u00eb vazhdim, OCP ose thjesht OpenShift).<\/p>\n<p>Megjithat\u00eb, gjat\u00eb procesit t\u00eb shkruarjes s\u00eb k\u00ebtij posti, kuptuam se ishim aq t\u00eb zakonsh\u00ebm me p\u00ebrdorimin e OpenShift, saq\u00eb thjesht nuk e kuptojm\u00eb sesi ai \u00ebsht\u00eb rritur dhe shnd\u00ebrruar n\u00eb nj\u00eb platform\u00eb t\u00eb mrekullueshme, e cila \u00ebsht\u00eb b\u00ebr\u00eb shum\u00eb m\u00eb tep\u00ebr se thjesht nj\u00eb distribucion Kubernetes. Ne e kemi marr\u00eb mosh\u00ebn dhe thjesht\u00ebsin\u00eb e OpenShift p\u00ebr t\u00eb mir\u00ebqen\u00eb, duke l\u00ebn\u00eb m\u00ebnjan\u00eb madh\u00ebshtin\u00eb e tij.<\/p>\n<p>K\u00ebshtu, ka ardhur koha p\u00ebr nj\u00eb pendim aktiv, dhe tani do t\u00eb krahasojm\u00eb hap pas hapi aktivizimin e \"Hello World\" ton\u00eb n\u00eb KUK dhe n\u00eb OpenShift, duke e b\u00ebr\u00eb k\u00ebt\u00eb sa m\u00eb objektivisht (me p\u00ebrjashtim t\u00eb ndonj\u00ebher\u00eb kur shprehim nj\u00eb q\u00ebndrim personal p\u00ebr subjektin). N\u00ebse ju intereson nj\u00eb mendim thjesht subjektiv mbi k\u00ebt\u00eb \u00e7\u00ebshtje, mund ta lexoni <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/swlh\/im-so-sorry-openshift-i-ve-taken-you-for-granted-f36fb47ea4d9\">k\u00ebtu (EN)<\/a><\/noindex>. N\u00eb k\u00ebt\u00eb post do t\u00eb ndjekim fakte dhe vet\u00ebm fakte.<\/p>\n<h3>Klastrat<\/h3>\n<p>\nPra, p\u00ebr \"Hello World\" ton\u00eb na duhen klastra. T\u00eb themi \"jo\" \u00e7do titulli publik t\u00eb cloud-it, q\u00eb t\u00eb mos paguajm\u00eb p\u00ebr servera, regjistra, rrjete, transmetime t\u00eb t\u00eb dh\u00ebnave etj. K\u00ebshtu, ne zgjedhim nj\u00eb klas\u00ebr t\u00eb thjesht\u00eb nj\u00eb-nod\u00ebsh n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/minikube.sigs.k8s.io\/docs\/start\/\">Minikube<\/a><\/noindex> (p\u00ebr KUK) dhe <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/products\/codeready-containers\/overview\">Code Ready Containers<\/a><\/noindex> (p\u00ebr klastrin OpenShift). T\u00eb dy k\u00ebto mund\u00ebsi jan\u00eb v\u00ebrtet t\u00eb thjeshta p\u00ebr instalim, por k\u00ebrkojn\u00eb shum\u00eb burime n\u00eb laptopin tuaj.<\/p>\n<p><img decoding=\"async\" alt=\"Na falenderojm\u00eb, OpenShift, nuk t\u00eb vler\u00ebsuam sa duhej dhe t\u00eb mor\u00ebm si t\u00eb mir\u00ebqen\u00eb\" src=\"\/wp-content\/uploads\/2020\/10\/01c748365253fc9e11e817876629ae7e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Nd\u00ebrtimi n\u00eb KUK<\/h3>\n<p>\nPra, le t\u00eb fillojm\u00eb.<\/p>\n<h4>Hapi 1 \u2013 ne nd\u00ebrrtojm\u00eb imazhin ton\u00eb t\u00eb kontejnerit<\/h4>\n<p>\nLe t\u00eb fillojm\u00eb duke e aktivizuar \"Hello World\" ton\u00eb n\u00eb minikube. P\u00ebr k\u00ebt\u00eb k\u00ebrkohet:<\/p>\n<ol>\n<li>1. Docker i instaluar.<\/li>\n<li>2. Git i instaluar.<\/li>\n<li>3. Maven q\u00eb \u00ebsht\u00eb vendosur (n\u00eb fakt, n\u00eb k\u00ebt\u00eb projekt p\u00ebrdoret binari mvnw, k\u00ebshtu q\u00eb mund ta kaloni k\u00ebt\u00eb hap).<\/li>\n<li>4. N\u00eb fakt, vet\u00eb burimi, dmth, kloni i depozit\u00ebs <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/gcolman\/quarkus-hello-world.git\">github.com\/gcolman\/quarkus-hello-world.git<\/a><\/noindex><\/li>\n<\/ol>\n<p>\nHapi i par\u00eb \u00ebsht\u00eb krijimi i nj\u00eb projekti Quarkus. Mos u frik\u00ebsoni n\u00ebse nuk keni punuar ndonj\u00ebher\u00eb me faqen Quarkus.io \u2013 \u00ebsht\u00eb e thjesht\u00eb. Thjesht zgjidhni komponent\u00ebt q\u00eb d\u00ebshironi t\u00eb p\u00ebrdorni n\u00eb projekt (RestEasy, Hibernate, Amazon SQS, Camel, etj.), dhe m\u00eb pas Quarkus do ta konfiguroj\u00eb automatikisht arketipin maven dhe do ta ngrej\u00eb gjith\u00e7ka n\u00eb github. Dometh\u00ebn\u00eb, me nj\u00eb klik t\u00eb vet\u00ebm t\u00eb mausit \u2013 dhe \u00ebsht\u00eb gati. Ky \u00ebsht\u00eb arsyeja pse e duam Quarkus.<\/p>\n<p><img decoding=\"async\" alt=\"Na falenderojm\u00eb, OpenShift, nuk t\u00eb vler\u00ebsuam sa duhej dhe t\u00eb mor\u00ebm si t\u00eb mir\u00ebqen\u00eb\" src=\"\/wp-content\/uploads\/2020\/10\/39a62058d91f8443e77466d374d02d34.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>M\u00ebnyra m\u00eb e thjesht\u00eb p\u00ebr t\u00eb nd\u00ebrtuar 'Hello World' n\u00eb nj\u00eb imazh kontejneri \u00ebsht\u00eb t\u00eb p\u00ebrdorim zgjerimet quarkus-maven p\u00ebr Docker, t\u00eb cilat do t\u00eb kryejn\u00eb t\u00eb gjith\u00eb pun\u00ebn e nevojshme. Me ardhjen e Quarkus, kjo \u00ebsht\u00eb b\u00ebr\u00eb v\u00ebrtet e leht\u00eb dhe e thjesht\u00eb: thjesht shtoni zgjerimin container-image-docker dhe mund t\u00eb krijoni imazhe me komandat maven.<\/p>\n<pre><code class=\"plaintext\">. \/mvnw quarkus:add-extension -Dextensions=\"container-image-docker\"\n<\/code><\/pre>\n<p>\nDhe, p\u00ebrfundimisht, kryejm\u00eb nd\u00ebrtimin e imazhit ton\u00eb duke p\u00ebrdorur Maven. Si rezultat, kodi yn\u00eb burimor kthehet n\u00eb nj\u00eb imazh kontejneri t\u00eb gatsh\u00ebm p\u00ebr t'u ekzekutuar n\u00eb ambientin e ekzekutimit t\u00eb kontejner\u00ebve.<\/p>\n<p><img decoding=\"async\" alt=\"Na falenderojm\u00eb, OpenShift, nuk t\u00eb vler\u00ebsuam sa duhej dhe t\u00eb mor\u00ebm si t\u00eb mir\u00ebqen\u00eb\" src=\"\/wp-content\/uploads\/2020\/10\/94b74cac6616896eb672a72302e70169.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<pre><code class=\"plaintext\">. \/mvnw -X clean package -Dquarkus.container-image.build=true\n<\/code><\/pre>\n<p>\nK\u00ebtu, n\u00eb fakt, \u00ebsht\u00eb gjith\u00e7ka, tani mund t\u00eb nisim kontejnerin me komand\u00ebn docker run, duke i vendosur sh\u00ebrbimin ton\u00eb n\u00eb portin 8080 p\u00ebr t'u qasur mbi t\u00eb.<\/p>\n<pre><code class=\"plaintext\">docker run -i \u2014 rm -p 8080:8080 gcolman\/quarkus-hello-world\n<\/code><\/pre>\n<p><img decoding=\"async\" alt=\"Na falenderojm\u00eb, OpenShift, nuk t\u00eb vler\u00ebsuam sa duhej dhe t\u00eb mor\u00ebm si t\u00eb mir\u00ebqen\u00eb\" src=\"\/wp-content\/uploads\/2020\/10\/4f46e13423d5027d85ebae2c98c926b8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Pasi instanca e kontejnerit \u00ebsht\u00eb nisur, mbetet vet\u00ebm t\u00eb kontrolloni me komand\u00ebn curl q\u00eb sh\u00ebrbimi yn\u00eb po punon:<\/p>\n<p><img decoding=\"async\" alt=\"Na falenderojm\u00eb, OpenShift, nuk t\u00eb vler\u00ebsuam sa duhej dhe t\u00eb mor\u00ebm si t\u00eb mir\u00ebqen\u00eb\" src=\"\/wp-content\/uploads\/2020\/10\/1c1462f52d6a487863c21f8f72a09d1f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Pra, gjith\u00e7ka funksionon, dhe ishte v\u00ebrtet e leht\u00eb dhe e thjesht\u00eb.<\/p>\n<h4>Hapi 2 \u2013 d\u00ebrgojm\u00eb kontejnerin ton\u00eb n\u00eb depozit\u00ebn e imazheve t\u00eb kontejner\u00ebve<\/h4>\n<p>\nDerisa, imazhi q\u00eb krijuam ruhet lokalisht, n\u00eb ruajtjen ton\u00eb lokale t\u00eb kontejner\u00ebve. N\u00ebse d\u00ebshirojm\u00eb ta p\u00ebrdorim k\u00ebt\u00eb imazh n\u00eb mjedisin ton\u00eb K8s, duhet ta ngrem\u00eb n\u00eb nj\u00eb depo tjet\u00ebr. N\u00eb Kubernetes nuk ka funksione t\u00eb tilla, prandaj do t\u00eb p\u00ebrdorim dockerhub. Sepse, s\u00eb pari, \u00ebsht\u00eb falas, dhe s\u00eb dyti, (m\u00eb t\u00ebr\u00eb) t\u00eb gjith\u00eb e b\u00ebjn\u00eb k\u00ebshtu.<\/p>\n<p>Kjo \u00ebsht\u00eb gjithashtu shum\u00eb e thjesht\u00eb, dhe k\u00ebtu ne na duhen vet\u00ebm nj\u00eb llogari n\u00eb dockerhub.<\/p>\n<p>Pra, le t'i vendosim dockerhub dhe ta d\u00ebrgojm\u00eb atje imazhin ton\u00eb.<\/p>\n<p><img decoding=\"async\" alt=\"Na falenderojm\u00eb, OpenShift, nuk t\u00eb vler\u00ebsuam sa duhej dhe t\u00eb mor\u00ebm si t\u00eb mir\u00ebqen\u00eb\" src=\"\/wp-content\/uploads\/2020\/10\/fb5d81ee15ca7594277c5a05da298fbd.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h4>Hapi 3 \u2013 nisim Kubernetes<\/h4>\n<p>\nKa shum\u00eb m\u00ebnyra p\u00ebr t\u00eb nd\u00ebrtuar konfigurimin e Kubernetes p\u00ebr t\u00eb nisur 'Hello World' ton\u00eb, por do t\u00eb p\u00ebrdorim m\u00eb t\u00eb thjesht\u00ebn, sepse k\u00ebshtu jemi ne...<\/p>\n<p>Fillimisht nisim klasterin minikube:<\/p>\n<pre><code class=\"plaintext\">minikube start\n<\/code><\/pre>\n<p><\/p>\n<h4>Hapi 4 \u2013 zhvillojm\u00eb imazhin ton\u00eb t\u00eb kontejnerit<\/h4>\n<p>\nTani duhet t\u00eb konvertojm\u00eb kodin ton\u00eb dhe imazhin e kontejnerit n\u00eb konfigurimet e Kubernetes. Me fjal\u00eb t\u00eb tjera, na nevojiten definita t\u00eb pod-it dhe deploy-it me referenc\u00eb n\u00eb imazhin ton\u00eb n\u00eb Docker Hub. Nj\u00eb nga m\u00ebnyrat m\u00eb t\u00eb thjeshta p\u00ebr ta b\u00ebr\u00eb k\u00ebt\u00eb \u00ebsht\u00eb t\u00eb ekzekutojm\u00eb komand\u00ebn e krijimit t\u00eb deploy-it, duke iu referuar imazhit ton\u00eb:<\/p>\n<p><img decoding=\"async\" alt=\"Na falenderojm\u00eb, OpenShift, nuk t\u00eb vler\u00ebsuam sa duhej dhe t\u00eb mor\u00ebm si t\u00eb mir\u00ebqen\u00eb\" src=\"\/wp-content\/uploads\/2020\/10\/0bd984a5b414310daca039289dd35cd2.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<pre><code class=\"plaintext\">kubectl create deployment hello-quarkus --image=gcolman\/quarkus-hello-world:1.0.0-SNAPSHOT\n<\/code><\/pre>\n<p>\nMe k\u00ebt\u00eb komand\u00eb i tham\u00eb Kubernetesit ton\u00eb t\u00eb krijoj\u00eb nj\u00eb konfigurim deploy-i, i cili duhet t\u00eb p\u00ebrmbaj\u00eb specifikimin e pod-it p\u00ebr imazhin ton\u00eb t\u00eb kontejnerit. Kjo komand\u00eb gjithashtu do ta aplikoj\u00eb k\u00ebt\u00eb konfigurim n\u00eb klasterin ton\u00eb minikube dhe do t\u00eb krijoj\u00eb nj\u00eb deploy q\u00eb do t\u00eb shkarkoj\u00eb imazhin ton\u00eb t\u00eb kontejnerit dhe do t\u00eb nis\u00eb pod-in n\u00eb klaster.<\/p>\n<h4>Hapi 5 \u2013 hapim qasjen n\u00eb sh\u00ebrbimin ton\u00eb<\/h4>\n<p>\nTani, kur kemi imazhin e kontejnerit t\u00eb zhvilluar, \u00ebsht\u00eb koha t\u00eb mendojm\u00eb p\u00ebr m\u00ebnyr\u00ebn e konfigurimit t\u00eb qasjes eksterrne n\u00eb k\u00ebt\u00eb sh\u00ebrbim Restful, i cili, n\u00eb fakt, \u00ebsht\u00eb programuar n\u00eb kodin ton\u00eb.<\/p>\n<p>Ka shum\u00eb m\u00ebnyra p\u00ebr ta b\u00ebr\u00eb k\u00ebt\u00eb. P\u00ebr shembull, mund t\u00eb p\u00ebrdorim komand\u00ebn expose p\u00ebr t\u00eb krijuar automatikisht komponent\u00ebt p\u00ebrkat\u00ebs t\u00eb Kubernetes, si sh\u00ebrbimet dhe endpointet. N\u00eb fakt, k\u00ebshtu do ta b\u00ebjm\u00eb, duke ekzekutuar komand\u00ebn expose p\u00ebr objektin ton\u00eb t\u00eb deploy-it:<\/p>\n<pre><code class=\"plaintext\">kubectl expose deployment hello-quarkus --type=NodePort --port=8080\n<\/code><\/pre>\n<p>\nLe t\u00eb ndalemi p\u00ebr nj\u00eb moment mbi opsionin \"--type\" t\u00eb komand\u00ebs expose.<\/p>\n<p>Kur b\u00ebjm\u00eb expose dhe krijojm\u00eb komponent\u00ebt e nevojsh\u00ebm p\u00ebr t\u00eb nisur sh\u00ebrbimin ton\u00eb, nd\u00ebr t\u00eb tjera, na nevojitet q\u00eb t\u00eb jashtme t\u00eb jet\u00eb e mundur t\u00eb lidhet me sh\u00ebrbimin hello-quarkus, i cili ndodhet brenda rrjetit ton\u00eb t\u00eb programuesh\u00ebm. Dhe parametri <b>lloji<\/b> na lejon t\u00eb krijojm\u00eb dhe lidhemi me elemente si balancuesit e ngarkes\u00ebs p\u00ebr t\u00eb drejtuar trafikun n\u00eb k\u00ebt\u00eb rrjet.<\/p>\n<p>P\u00ebr shembull, duke shkruar <b>type=LoadBalancer<\/b>, ne automatikisht inicojm\u00eb nj\u00eb balancues ngarkese n\u00eb re t\u00eb hapur p\u00ebr t\u00eb u lidhur me klasterin ton\u00eb Kubernetes. Kjo, sigurisht, \u00ebsht\u00eb mrekullueshme, por duhet t\u00eb kuptojm\u00eb se nj\u00eb konfigurim i till\u00eb do t\u00eb jet\u00eb i lidhur ngusht\u00ebsisht me nj\u00eb re t\u00eb caktuar dhe do t\u00eb jet\u00eb m\u00eb e v\u00ebshtir\u00eb p\u00ebr t'u migruar midis instancave t\u00eb Kubernetes n\u00eb mjedise t\u00eb ndryshme.<\/p>\n<p>N\u00eb shembullin ton\u00eb <b>type=NodePort<\/b>, q\u00eb do t\u00eb thot\u00eb se k\u00ebrkesa p\u00ebr sh\u00ebrbimin ton\u00eb b\u00ebhet p\u00ebrmes adres\u00ebs IP t\u00eb nod\u00ebs dhe numrit t\u00eb port\u00ebs. Ky variant lejon q\u00eb t\u00eb mos p\u00ebrdorim asnj\u00eb cloud publik, por k\u00ebrkon disa hapa shtes\u00eb. S\u00eb pari, na nevojitet nj\u00eb balancues ngarkese privat, prandaj do t\u00eb krijojm\u00eb n\u00eb klasterin ton\u00eb balancuesin e ngarkes\u00ebs NGINX.<\/p>\n<h4>Hapi 6 \u2013 vendosja e balancuesit t\u00eb ngarkes\u00ebs<\/h4>\n<p>\nMinikube ka nj\u00eb s\u00ebr\u00eb funksionesh t\u00eb platform\u00ebs q\u00eb leht\u00ebsojn\u00eb krijimin e komponenteve t\u00eb nevojshme p\u00ebr qasje nga jasht\u00eb, si\u00e7 jan\u00eb kontrollor\u00ebt ingress. Minikube vjen me kontrollorin ingress Nginx, dhe na mbetet vet\u00ebm ta aktivizojm\u00eb dhe ta konfigurajm\u00eb.<\/p>\n<pre><code class=\"plaintext\">minikube addons enable ingress\n<\/code><\/pre>\n<p>\nTani me nj\u00eb komand\u00eb krijojm\u00eb kontrollorin ingress Nginx, i cili do t\u00eb funksionoj\u00eb brenda klasterit ton\u00eb minikube:<\/p>\n<pre><code class=\"plaintext\">ingress-nginx-controller-69ccf5d9d8-j5gs9 1\/1 Duke funksionuar 1 33m\n<\/code><\/pre>\n<p><\/p>\n<h4>Hapi 7 \u2013 Konfigurimi i ingress<\/h4>\n<p>\nTani duhet t\u00eb konfigurojm\u00eb kontrollorin ingress Nginx, q\u00eb t\u00eb pranoj\u00eb k\u00ebrkesat hello-quarkus.<\/p>\n<p><img decoding=\"async\" alt=\"Na falenderojm\u00eb, OpenShift, nuk t\u00eb vler\u00ebsuam sa duhej dhe t\u00eb mor\u00ebm si t\u00eb mir\u00ebqen\u00eb\" src=\"\/wp-content\/uploads\/2020\/10\/18183cb985436447cf15c501e4c6c3a3.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><img decoding=\"async\" alt=\"Na falenderojm\u00eb, OpenShift, nuk t\u00eb vler\u00ebsuam sa duhej dhe t\u00eb mor\u00ebm si t\u00eb mir\u00ebqen\u00eb\" src=\"\/wp-content\/uploads\/2020\/10\/577f1e6218094b5ee23052d49869e838.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Dhe, p\u00ebrfundimisht, duhet t\u00eb aplikojm\u00eb k\u00ebt\u00eb konfigurim.<\/p>\n<p><img decoding=\"async\" alt=\"Na falenderojm\u00eb, OpenShift, nuk t\u00eb vler\u00ebsuam sa duhej dhe t\u00eb mor\u00ebm si t\u00eb mir\u00ebqen\u00eb\" src=\"\/wp-content\/uploads\/2020\/10\/c519d7763cd1c685063a6bbab6a813ea.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<pre><code class=\"plaintext\">kubectl apply -f ingress.yml\n<\/code><\/pre>\n<p><img decoding=\"async\" alt=\"Na falenderojm\u00eb, OpenShift, nuk t\u00eb vler\u00ebsuam sa duhej dhe t\u00eb mor\u00ebm si t\u00eb mir\u00ebqen\u00eb\" src=\"\/wp-content\/uploads\/2020\/10\/68fba4ef3d2762a97dc5be5de9e6b864.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Duke qen\u00eb se i b\u00ebjm\u00eb gjith\u00eb k\u00ebt\u00eb n\u00eb kompjuterin ton\u00eb, thjesht shtojm\u00eb adres\u00ebn IP t\u00eb nod\u00ebs son\u00eb n\u00eb skedarin \/etc\/hosts, p\u00ebr t\u00eb drejtuar k\u00ebrkesat http drejt minikube ton\u00eb n\u00eb balancuesin e ngarkes\u00ebs NGINX.<\/p>\n<pre><code class=\"plaintext\">192.168.99.100 hello-quarkus.info\n<\/code><\/pre>\n<p>\nGjith\u00e7ka, tani sh\u00ebrbimi yn\u00eb minikube \u00ebsht\u00eb i aksesuesh\u00ebm nga jasht\u00eb p\u00ebrmes kontrollorit ingress Nginx.<\/p>\n<p><img decoding=\"async\" alt=\"Na falenderojm\u00eb, OpenShift, nuk t\u00eb vler\u00ebsuam sa duhej dhe t\u00eb mor\u00ebm si t\u00eb mir\u00ebqen\u00eb\" src=\"\/wp-content\/uploads\/2020\/10\/a456f34d168d43e9236e4769722b7f5d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Ajo ishte e leht\u00eb, apo jo? Ose jo aq shum\u00eb?<\/h3>\n<p><img decoding=\"async\" alt=\"Na falenderojm\u00eb, OpenShift, nuk t\u00eb vler\u00ebsuam sa duhej dhe t\u00eb mor\u00ebm si t\u00eb mir\u00ebqen\u00eb\" src=\"\/wp-content\/uploads\/2020\/10\/237015dc06bb9d12eb4cd2944dc6df58.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Ekzekutimi n\u00eb OpenShift (Code Ready Containers)<\/h3>\n<p>\nTani le t\u00eb shohim se si b\u00ebhet gjith\u00eb kjo n\u00eb Red Hat OpenShift Container Platform (OCP).<\/p>\n<p>Si n\u00eb rastin e minikube, ne zgjedhim skem\u00ebn me nj\u00eb klaster t\u00eb vet\u00ebm OpenShift n\u00eb form\u00ebn e Code Ready Containers (CRC). M\u00eb par\u00eb kjo quhej minishift dhe \u00ebsht\u00eb bazuar n\u00eb projektin OpenShift Origin, dhe tani \u00ebsht\u00eb CRC, e nd\u00ebrtuar mbi platform\u00ebn Red Hat OpenShift Container.<\/p>\n<p>K\u00ebtu, na falni, nuk mund t\u00eb p\u00ebrmbaheshim pa th\u00ebn\u00eb: 'OpenShift \u00ebsht\u00eb madh\u00ebshtor!'<\/p>\n<p>Fillimisht menduam t\u00eb shkruajm\u00eb se zhvillimi n\u00eb OpenShift nuk \u00ebsht\u00eb ndryshe nga zhvillimi n\u00eb Kubernetes. Dhe n\u00eb thelb, k\u00ebshtu \u00ebsht\u00eb. Por gjat\u00eb shkrimit t\u00eb k\u00ebtij postimi, na erdhi n\u00eb mendje se sa shum\u00eb nd\u00ebrlikime ka kur s'ke OpenShift, dhe prandaj, po e p\u00ebrs\u00ebrisim, \u00ebsht\u00eb madh\u00ebshtor. Ne i duam gj\u00ebrat t\u00eb thjeshta, dhe m\u00ebnyra se si leht\u00eb zvog\u00eblohet shembulli yn\u00eb n\u00eb OpenShift krahasuar me minikube, n\u00eb fakt, na nxiti t\u00eb shkruajm\u00eb k\u00ebt\u00eb post.<\/p>\n<p>Le t\u00eb kalojm\u00eb n\u00eb proces dhe t\u00eb shohim \u00e7far\u00eb na nevojitet t\u00eb b\u00ebjm\u00eb.<\/p>\n<p>K\u00ebshtu, n\u00eb shembullin e minikube filluam me Docker\u2026 Prit, nuk na nevojitet m\u00eb q\u00eb n\u00eb makin\u00eb t\u00eb jet\u00eb instaluar Docker.<\/p>\n<p><b>Dhe git lokal nuk na nevojitet.<br \/>\nAs Maven nuk \u00ebsht\u00eb i nevojsh\u00ebm.<br \/>\nAs nuk nevojitet t\u00eb krijojm\u00eb manualisht imazhin e kontejnerit.<br \/>\nAs nuk nevojitet t\u00eb k\u00ebrkojm\u00eb nj\u00eb repository p\u00ebr imazhet e kontejner\u00ebve.<br \/>\nAs nuk nevojitet t\u00eb instalojm\u00eb nj\u00eb kontrollues ingress.<br \/>\nAs nuk nevojitet t\u00eb konfigurojm\u00eb ingress.<\/b><\/p>\n<p>E kuptuat, apo jo? P\u00ebr t\u00eb vendosur dhe drejtuar aplikacionin ton\u00eb n\u00eb OpenShift, nuk duhen nga ato q\u00eb p\u00ebrmend\u00ebm m\u00eb lart. Procesi vet\u00eb duket si m\u00eb posht\u00eb.<\/p>\n<h4>Hapi 1 \u2013 Nisim klasterin ton\u00eb OpenShift<\/h4>\n<p>\nNe p\u00ebrdorim Code Ready Containers nga Red Hat, i cili n\u00eb thelb \u00ebsht\u00eb i nj\u00ebjti si Minikube, por me nj\u00eb klaster t\u00eb plot\u00eb nj\u00eb-nod i Openshift.<\/p>\n<pre><code class=\"plaintext\">crc start\n<\/code><\/pre>\n<p><\/p>\n<h4>Hapi 2 \u2013 Kryejm\u00eb nd\u00ebrtimin dhe vendosjen e aplikacionit n\u00eb klasterin OpenShift<\/h4>\n<p>\nN\u00eb k\u00ebt\u00eb hap, thjesht\u00ebsia dhe leht\u00ebsia e OpenShift shfaqen n\u00eb mbar\u00eb hapsir\u00ebn. Si n\u00eb t\u00eb gjitha shp\u00ebrndarjet e Kubernetes, kemi shum\u00eb m\u00ebnyra p\u00ebr t\u00eb vendosur aplikacionin n\u00eb klaster. Dhe, si n\u00eb rastin e KUK, ne zgjedhim q\u00ebllimisht at\u00eb m\u00eb t\u00eb leht\u00eb.<\/p>\n<p>OpenShift gjithmon\u00eb \u00ebsht\u00eb nd\u00ebrtuar si nj\u00eb platform\u00eb p\u00ebr krijimin dhe drejtp\u00ebrdrejtimin e aplikacioneve t\u00eb kontejner\u00ebve. Nd\u00ebrtimi i konteiner\u00ebve ka qen\u00eb gjithmon\u00eb nj\u00eb pjes\u00eb e pandar\u00eb e k\u00ebsaj platforme, ndaj k\u00ebtu ka shum\u00eb burime shtes\u00eb Kubernetes p\u00ebr detyra p\u00ebrkat\u00ebse.<\/p>\n<p>Ne do t\u00eb p\u00ebrdorim procesin Source 2 Image (S2I) t\u00eb OpenShift, i cili ka disa m\u00ebnyra t\u00eb ndryshme p\u00ebr t\u00eb marr\u00eb kodin ton\u00eb (ose skedar\u00ebt binar\u00eb) dhe p\u00ebr ta shnd\u00ebrruar at\u00eb n\u00eb nj\u00eb imazh konteineri, p\u00ebr t'u ekzekutuar n\u00eb klasterin OpenShift.<\/p>\n<p>P\u00ebr k\u00ebt\u00eb, do na nevojiten dy gj\u00ebra:<\/p>\n<ul>\n<li>Kodi yn\u00eb burimor n\u00eb nj\u00eb repository git<\/li>\n<li>Imazhi Builder, mbi baz\u00ebn e t\u00eb cilit do t\u00eb kryhet nd\u00ebrtimi.<\/li>\n<\/ul>\n<p>\nKa shum\u00eb imazhe t\u00eb tilla, t\u00eb mb\u00ebshtetura si nga Red Hat ashtu edhe nga komuniteti, dhe ne do t\u00eb p\u00ebrdorim imazhin OpenJDK, pasi po nd\u00ebrtuoj nj\u00eb aplikacion Java.<\/p>\n<p>T\u00eb nisim nd\u00ebrtimin S2I mund t\u00eb b\u00ebhet si nga konsola grafike OpenShift Developer, ashtu edhe nga linja e komand\u00ebs. Ne do ta p\u00ebrdorim komand\u00ebn new-app, duke i treguar se ku t\u00eb merrte imazhin builder dhe kodin ton\u00eb burimor.<\/p>\n<p><img decoding=\"async\" alt=\"Na falenderojm\u00eb, OpenShift, nuk t\u00eb vler\u00ebsuam sa duhej dhe t\u00eb mor\u00ebm si t\u00eb mir\u00ebqen\u00eb\" src=\"\/wp-content\/uploads\/2020\/10\/64b8091c6857999c94dd907ad12fa9ae.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<pre><code class=\"plaintext\">oc new-app registry.access.redhat.com\/ubi8\/openjdk-11:latest~https:\/\/github.com\/gcolman\/quarkus-hello-world.git\n<\/code><\/pre>\n<p>\nK\u00ebtu, aplikacioni yn\u00eb \u00ebsht\u00eb krijuar. Procesi S2I ka realizuar k\u00ebto gj\u00ebra:<\/p>\n<ul>\n<li>Krijoi nj\u00eb build-pod t\u00eb sh\u00ebrbimit p\u00ebr gj\u00ebra q\u00eb lidhen me nd\u00ebrtimin e aplikacionit.<\/li>\n<li>Krijoi konfigurimin e OpenShift Build.<\/li>\n<li>Shkarkoi imazhin builder n\u00eb registrin e brendsh\u00ebm docker t\u00eb OpenShift.<\/li>\n<li>Kllonoi \"Hello World\" n\u00eb repository-n ton\u00eb lokale.<\/li>\n<li>Pash\u00eb se kishte nj\u00eb maven pom, prandaj e kompilova aplikacionin duke p\u00ebrdorur maven.<\/li>\n<li>Krijova nj\u00eb imazh t\u00eb ri kontejneri q\u00eb p\u00ebrmbante aplikacionin e kompiluar Java dhe e vendosa k\u00ebt\u00eb imazh n\u00eb regjistrin e brendsh\u00ebm t\u00eb kontejner\u00ebve.<\/li>\n<li>Krijova nj\u00eb Kubernetes Deployment me specifikimet e pod-it, sh\u00ebrbimit etj.<\/li>\n<li>Nisa deploy-in e imazhit t\u00eb kontejnerit.<\/li>\n<li>Fshiva pod-in ndihm\u00ebs build.<\/li>\n<\/ul>\n<p>\nN\u00eb k\u00ebt\u00eb list\u00eb ka shum\u00eb gj\u00ebra, por e r\u00ebnd\u00ebsishmja \u00ebsht\u00eb se e gjith\u00eb nd\u00ebrtimi ndodh ekskluzivisht brenda OpenShift-it, regjistri i brendsh\u00ebm Docker ndodhet brenda OpenShift-it, dhe procesi i nd\u00ebrtimit krijon t\u00eb gjith\u00eb komponent\u00ebt Kubernetes dhe i nis ata n\u00eb klaster.<\/p>\n<p>N\u00ebse e ndjekim vizualisht nisjen S2I n\u00eb konsol\u00eb, mund t\u00eb shohim si gjat\u00eb nd\u00ebrtimit niset pod-i i nd\u00ebrtimit.<\/p>\n<p><img decoding=\"async\" alt=\"Na falenderojm\u00eb, OpenShift, nuk t\u00eb vler\u00ebsuam sa duhej dhe t\u00eb mor\u00ebm si t\u00eb mir\u00ebqen\u00eb\" src=\"\/wp-content\/uploads\/2020\/10\/bd69c6e27813b1211a11e522f28f45b7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Dhe tani le t\u00eb shohim log-et e pod-it builder: s\u00eb pari, aty shihet si maven b\u00ebn pun\u00ebn e tij dhe shkarkon var\u00ebsit\u00eb p\u00ebr nd\u00ebrtimin e aplikacionit ton\u00eb java.<\/p>\n<p><img decoding=\"async\" alt=\"Na falenderojm\u00eb, OpenShift, nuk t\u00eb vler\u00ebsuam sa duhej dhe t\u00eb mor\u00ebm si t\u00eb mir\u00ebqen\u00eb\" src=\"\/wp-content\/uploads\/2020\/10\/326192f9f9373e451d601b77052d67d1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Pas p\u00ebrfundimit t\u00eb nd\u00ebrtimit maven, niset nd\u00ebrtimi i imazhit t\u00eb kontejnerit, dhe pastaj ky imazh i nd\u00ebrtuar d\u00ebrgohet n\u00eb repo-in e brendsh\u00ebm.<\/p>\n<p><img decoding=\"async\" alt=\"Na falenderojm\u00eb, OpenShift, nuk t\u00eb vler\u00ebsuam sa duhej dhe t\u00eb mor\u00ebm si t\u00eb mir\u00ebqen\u00eb\" src=\"\/wp-content\/uploads\/2020\/10\/c97da4c17a8e275d39104126d0f87048.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>K\u00ebtu \u00ebsht\u00eb, procesi i nd\u00ebrtimit p\u00ebrfundoi. Tani sigurohemi q\u00eb pod-et dhe sh\u00ebrbimet e aplikacionit ton\u00eb jan\u00eb nisur n\u00eb klaster.<\/p>\n<pre><code class=\"plaintext\">oc get service\n<\/code><\/pre>\n<p><img decoding=\"async\" alt=\"Na falenderojm\u00eb, OpenShift, nuk t\u00eb vler\u00ebsuam sa duhej dhe t\u00eb mor\u00ebm si t\u00eb mir\u00ebqen\u00eb\" src=\"\/wp-content\/uploads\/2020\/10\/f16a098a096128073f305e0444061417.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>K\u00ebtu \u00ebsht\u00eb gjith\u00e7ka. Dhe vet\u00ebm nj\u00eb komand\u00eb. Na mbetet t\u00eb b\u00ebjm\u00eb expose t\u00eb k\u00ebtij sh\u00ebrbimi p\u00ebr qasje nga jasht\u00eb.<\/p>\n<h4>Hapi 3 \u2013 b\u00ebjm\u00eb expose t\u00eb sh\u00ebrbimit p\u00ebr qasje nga jasht\u00eb<\/h4>\n<p>\nSi n\u00eb rastin e KUK, n\u00eb platform\u00ebn OpenShift, asaj \u00abHello World\u00bb i nevojitet gjithashtu nj\u00eb router p\u00ebr t\u00eb drejtuar trafikun e jasht\u00ebm n\u00eb sh\u00ebrbimin brenda klasterit. N\u00eb OpenShift kjo b\u00ebhet shum\u00eb leht\u00eb. S\u00eb pari, n\u00eb klaster ka nj\u00eb komponent t\u00eb routing-ut HAProxy t\u00eb instaluar si standard (mund ta z\u00ebvend\u00ebsojm\u00eb me NGINX). S\u00eb dyti, ka burime speciale dhe shum\u00eb t\u00eb qarta q\u00eb quhen Routes dhe i ngjajn\u00eb objekteve Ingress n\u00eb Kubernetes-in e dikursh\u00ebm (n\u00eb fakt, Routes t\u00eb OpenShift kan\u00eb pasur nj\u00eb ndikim t\u00eb madh n\u00eb dizajnin e objekteve Ingress, t\u00eb cilat tani mund t\u00eb p\u00ebrdoren edhe n\u00eb OpenShift), por p\u00ebr \u00abHello World\u00bb ton\u00eb, madje dhe n\u00eb shumic\u00ebn e rasteve t\u00eb tjera, ne do t\u00eb mjaftohemi me Route-in standard pa konfigurim shtes\u00eb.<\/p>\n<p>P\u00ebr t\u00eb krijuar nj\u00eb FQDN t\u00eb ruterizuar p\u00ebr \u00abHello World\u00bb (po, n\u00eb OpenShift ka DNS t\u00eb vet p\u00ebr routing me emra sh\u00ebrbimesh), ne thjesht do t\u00eb ekzekutojm\u00eb expose p\u00ebr sh\u00ebrbimin ton\u00eb:<\/p>\n<p><img decoding=\"async\" alt=\"Na falenderojm\u00eb, OpenShift, nuk t\u00eb vler\u00ebsuam sa duhej dhe t\u00eb mor\u00ebm si t\u00eb mir\u00ebqen\u00eb\" src=\"\/wp-content\/uploads\/2020\/10\/d6b76943594aa71195ca9af500db6c10.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<pre><code class=\"plaintext\">oc expose service quarkus-hello-world\n<\/code><\/pre>\n<p>\nN\u00ebse shohim Route-in sapo t\u00eb krijuar, aty mund t\u00eb gjenden FQDN dhe detaje t\u00eb tjera mbi routing:<\/p>\n<pre><code class=\"plaintext\">oc get route\n<\/code><\/pre>\n<p><img decoding=\"async\" alt=\"Na falenderojm\u00eb, OpenShift, nuk t\u00eb vler\u00ebsuam sa duhej dhe t\u00eb mor\u00ebm si t\u00eb mir\u00ebqen\u00eb\" src=\"\/wp-content\/uploads\/2020\/10\/dc59c36166605ef0a5a24b2b7ffa65b6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Dhe p\u00ebr n\u00eb fund, i qasemi sh\u00ebrbimit ton\u00eb nga shfletuesi:<\/p>\n<p><img decoding=\"async\" alt=\"Na falenderojm\u00eb, OpenShift, nuk t\u00eb vler\u00ebsuam sa duhej dhe t\u00eb mor\u00ebm si t\u00eb mir\u00ebqen\u00eb\" src=\"\/wp-content\/uploads\/2020\/10\/fccf6cae1746fa59df2ff8ffb6973666.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Por tani tani ishte v\u00ebrtet e leht\u00eb!<\/h3>\n<p>\nNe e duam Kubernetes dhe gjith\u00e7ka q\u00eb kjo teknologji ofron, si dhe ne e duam thjesht\u00ebsin\u00eb dhe leht\u00ebsin\u00eb. Kubernetes u krijua p\u00ebr t\u00eb thjeshtuar n\u00eb m\u00ebnyr\u00eb t\u00eb jasht\u00ebzakonshme operimin e kontejner\u00ebve t\u00eb shp\u00ebrndara dhe t\u00eb shkall\u00ebzueshme, por thjesht\u00ebsia e tij nuk mjafton m\u00eb sot p\u00ebr t\u00eb futur aplikacionet n\u00eb funksion. K\u00ebtu hyn n\u00eb loj\u00eb OpenShift, i cili \u00ebsht\u00eb n\u00eb hap me koh\u00ebn dhe ofron Kubernetes t\u00eb orientuar kryesisht ndaj zhvilluesve. U investua shum\u00eb p\u00ebr ta p\u00ebrshtatur platform\u00ebn OpenShift specifikisht p\u00ebr zhvilluesit, duke p\u00ebrfshir\u00eb krijimin e instrumenteve t\u00eb till\u00eb si S2I, ODI, Portali p\u00ebr Zhvilluesit, OpenShift Operator Framework, integrimin me IDE, Katalog\u00ebt e Zhvilluesve, integrimin me Helm, monitorimin dhe shum\u00eb t\u00eb tjera.<\/p>\n<p>Shpresojm\u00eb q\u00eb ky artikull ishte interesant dhe i dobish\u00ebm p\u00ebr ju. Dhe mund t\u00eb gjeni burime shtes\u00eb, materiale dhe gj\u00ebra t\u00eb tjera t\u00eb dobishme p\u00ebr zhvillimin n\u00eb platform\u00ebn OpenShift n\u00eb portalin <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/\">Red Hat Developers<\/a><\/noindex>.<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/redhatrussia\/blog\/523568\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u042d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0443 \u043d\u0430\u0448\u0438\u0445 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432 \u0431\u044b\u043b\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u043e\u0432 \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c\u0438 \u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 Kubernetes \u0438 \u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0435 \u0442\u0430\u043a\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430 OpenShift. \u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u043c\u044b \u043e\u0431\u044b\u0447\u043d\u043e \u0441 \u0442\u0435\u0437\u0438\u0441\u0430, \u0447\u0442\u043e Kubernetes \u2013 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e Kubernetes, \u0430 OpenShift \u2013 \u044d\u0442\u043e \u0443\u0436\u0435 Kubernetes-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430, \u043a\u0430\u043a Microsoft AKS \u0438\u043b\u0438 Amazon EKS. \u0423 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u044d\u0442\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":97255,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-97254","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u042d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0443 \u043d\u0430\u0448\u0438\u0445 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432 \u0431\u044b\u043b\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u043e\u0432 \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c\u0438 \u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 Kubernetes \u0438 \u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0435 \u0442\u0430\u043a\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430 OpenShift.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/prosti-openshift-my-nedostatochno-czenili-tebya-i-prinimali-kak-dolzhnoe\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u0440\u043e\u0441\u0442\u0438, OpenShift, \u043c\u044b \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0446\u0435\u043d\u0438\u043b\u0438 \u0442\u0435\u0431\u044f \u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b\u0438 \u043a\u0430\u043a \u0434\u043e\u043b\u0436\u043d\u043e\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u042d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0443 \u043d\u0430\u0448\u0438\u0445 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432 \u0431\u044b\u043b\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u043e\u0432 \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c\u0438 \u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 Kubernetes \u0438 \u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0435 \u0442\u0430\u043a\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430 OpenShift.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/prosti-openshift-my-nedostatochno-czenili-tebya-i-prinimali-kak-dolzhnoe\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-10-17T00:42:32+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-10-17T00:42:32+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Na vjen keq, OpenShift, nuk t\u00eb kemi vler\u00ebsuar sa duhet dhe t\u00eb kemi pranuar si t\u00eb mir\u00ebqen\u00eb | ProHoster","description":"Ky ky \u043f\u043e\u0441\u0442 \u00ebsht\u00eb shkruar sepse punonj\u00ebsit tan\u00eb kan\u00eb pasur shum\u00eb biseda me klient\u00ebt rreth zhvillimit t\u00eb aplikacioneve n\u00eb Kubernetes dhe karakteristikave t\u00eb k\u00ebtij zhvillimi n\u00eb OpenShift.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/prosti-openshift-my-nedostatochno-czenili-tebya-i-prinimali-kak-dolzhnoe","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u0440\u043e\u0441\u0442\u0438, OpenShift, \u043c\u044b \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0446\u0435\u043d\u0438\u043b\u0438 \u0442\u0435\u0431\u044f \u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b\u0438 \u043a\u0430\u043a \u0434\u043e\u043b\u0436\u043d\u043e\u0435 | ProHoster","og:description":"\u042d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0443 \u043d\u0430\u0448\u0438\u0445 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432 \u0431\u044b\u043b\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u043e\u0432 \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c\u0438 \u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 Kubernetes \u0438 \u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0435 \u0442\u0430\u043a\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430 OpenShift.","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/prosti-openshift-my-nedostatochno-czenili-tebya-i-prinimali-kak-dolzhnoe","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-10-17T00:42:32+00:00","article:modified_time":"2020-10-17T00:42:32+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"97254","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:24:26","updated":"2022-09-30 14:35:33","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/97254","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=97254"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/97254\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/97255"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=97254"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=97254"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=97254"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}