{"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":"M\u00eb fal, OpenShift, nuk t\u00eb kemi vler\u00ebsuar mjaftuesh\u00ebm dhe t\u00eb kemi marr\u00eb p\u00ebr t\u00eb dh\u00ebn\u00eb.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ky\u00e7ti \u00ebsht\u00eb shkruar pasi punonj\u00ebsit tan\u00eb kan\u00eb pasur shum\u00eb biseda me klient\u00ebt mbi zhvillimin e aplikacioneve n\u00eb Kubernetes dhe specifikat e k\u00ebtij zhvillimi n\u00eb OpenShift.<\/p>\n<p><img decoding=\"async\" alt=\"M\u00eb fal, OpenShift, nuk t\u00eb kemi vler\u00ebsuar mjaftuesh\u00ebm dhe t\u00eb kemi marr\u00eb p\u00ebr t\u00eb dh\u00ebn\u00eb.\" src=\"\/wp-content\/uploads\/2020\/10\/ad447aeb80d3ae56ea4598cd959456de.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNe zakonisht 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\u00eb prej k\u00ebtyre platformave ka avantazhet e veta, orientuar ndaj nj\u00eb audience t\u00eb caktuar. Pas k\u00ebsaj, biseda kalon n\u00eb krahasimin e forcave dhe dob\u00ebsive t\u00eb platformave specifike.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nN\u00eb p\u00ebrgjith\u00ebsi, ne menduam t\u00eb shkruajm\u00eb k\u00ebt\u00eb postim me nj\u00eb p\u00ebrfundim si \"Doni, nuk ka r\u00ebnd\u00ebsi ku e ekzekutoni kodin, n\u00eb OpenShift, AKS, EKS, n\u00eb ndonj\u00eb Kubernetes t\u00eb personalizuar, madje n\u00eb \u00e7far\u00ebdo Kubernetes-i\" <i>(p\u00ebr shkak t\u00eb shkurt\u00ebsis\u00eb, le ta quajm\u00eb KUK)<\/i> \u2013 \u00ebsht\u00eb n\u00eb t\u00eb v\u00ebrtet\u00eb e thjesht\u00eb, p\u00ebr t\u00eb dyja.<\/p>\n<p>M\u00eb pas planifikonim t\u00eb merrnim nj\u00eb \"Hello World\" t\u00eb thjesht\u00eb dhe n\u00eb shembullin e tij t\u00eb tregonin se \u00e7far\u00eb kan\u00eb t\u00eb p\u00ebrbashk\u00ebt dhe cilat jan\u00eb diferencat midis KUK dhe Red Hat OpenShift Container Platform (m\u00eb pas, OCP ose thjesht OpenShift).<\/p>\n<p>Megjithat\u00eb, gjat\u00eb shkrimit t\u00eb k\u00ebtij postimi, kuptuam se ishim m\u00ebsuar aq shum\u00eb me p\u00ebrdorimin e OpenShift, saq\u00eb nuk e kuptojm\u00eb se sa \u00ebsht\u00eb rritur dhe kthyer n\u00eb nj\u00eb platform\u00eb t\u00eb shk\u00eblqyer, e cila tani \u00ebsht\u00eb shum\u00eb m\u00eb tep\u00ebr sesa thjesht nj\u00eb distribucion Kubernetes. Jemi m\u00ebsuar ta perceptojm\u00eb pjekurin\u00eb dhe thjesht\u00ebsin\u00eb e OpenShift si di\u00e7ka t\u00eb natyrshme, duke humbur nga v\u00ebmendja shk\u00eblqimin e tij.<\/p>\n<p>N\u00eb p\u00ebrgjith\u00ebsi, ka ardhur koha p\u00ebr nj\u00eb pendim aktiv, dhe tani do t\u00eb krahasojm\u00eb hap pas hapi testin ton\u00eb 'Hello World' n\u00eb KUK dhe n\u00eb OpenShift, duke e b\u00ebr\u00eb k\u00ebt\u00eb sa m\u00eb objektivisht t\u00eb jet\u00eb e mundur (ndoshta duke shprehur ndonj\u00ebher\u00eb mendimin ton\u00eb personal mbi tem\u00ebn). N\u00ebse jeni t\u00eb interesuar p\u00ebr mendimin e past\u00ebr 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 postim do t\u00eb mbajm\u00eb q\u00ebndrim te faktet dhe vet\u00ebm te faktet.<\/p>\n<h3>Kluster\u00ebt<\/h3>\n<p>\nPra, p\u00ebr 'Hello World' ton\u00eb na nevojiten kluster\u00eb. T\u00eb themi menj\u00ebher\u00eb 'jo' \u00e7do lloj cloud publik, p\u00ebr t\u00eb mos paguar p\u00ebr server\u00ebt, regjistrat, rrjetet, transferimin e t\u00eb dh\u00ebnave, etj. Prandaj, ne zgjedhim nj\u00eb kluster t\u00eb thjesht\u00eb me nj\u00eb nyje 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 klusterin OpenShift). T\u00eb dyja k\u00ebto variante jan\u00eb realisht t\u00eb lehta p\u00ebr t'u instaluar, por do t\u00eb k\u00ebrkojn\u00eb mjaft burime n\u00eb laptopin tuaj.<\/p>\n<p><img decoding=\"async\" alt=\"M\u00eb fal, OpenShift, nuk t\u00eb kemi vler\u00ebsuar mjaftuesh\u00ebm dhe t\u00eb kemi marr\u00eb p\u00ebr t\u00eb dh\u00ebn\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 rregullojm\u00eb.<\/p>\n<h4>Hapi 1 \u2013 krijojm\u00eb imazhin ton\u00eb t\u00eb kontejnerit<\/h4>\n<p>\nS\u00eb pari do t\u00eb fillojm\u00eb duke e drejtuar 'Hello World' ton\u00eb n\u00eb minikube. P\u00ebr k\u00ebt\u00eb nevojiten:<\/p>\n<ol>\n<li>1. Docker i instaluar.<\/li>\n<li>2. Git i instaluar.<\/li>\n<li>3. Maven i instaluar (n\u00eb fakt, n\u00eb k\u00ebt\u00eb projekt p\u00ebrdoret binari mvnw, k\u00ebshtu q\u00eb mund t\u00eb kaloni pa k\u00ebt\u00eb).<\/li>\n<li>4. Burimi vet\u00eb, pra, kloni i depove <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>\nS\u00eb pari duhet t\u00eb krijoni nj\u00eb projekt Quarkus. Mos u friksoni n\u00ebse nuk keni punuar ndonj\u00ebher\u00eb me sitin Quarkus.io \u2013 \u00ebsht\u00eb e leht\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 vet\u00eb arketipin maven dhe do ta publikoj\u00eb gjith\u00e7ka n\u00eb github. Pra, ndonj\u00ebher\u00eb nj\u00eb klikim dhe \u00ebsht\u00eb gati. K\u00ebshtu q\u00eb e duam Quarkus.<\/p>\n<p><img decoding=\"async\" alt=\"M\u00eb fal, OpenShift, nuk t\u00eb kemi vler\u00ebsuar mjaftuesh\u00ebm dhe t\u00eb kemi marr\u00eb p\u00ebr t\u00eb dh\u00ebn\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' ton\u00eb n\u00eb imazhin e kontejnerit \u00ebsht\u00eb t\u00eb p\u00ebrdorni zgjerimet quarkus-maven p\u00ebr Docker-in, t\u00eb cilat do t\u00eb b\u00ebjn\u00eb t\u00eb gjith\u00eb pun\u00ebn e nevojshme. Me ardhjen e Quarkus, kjo \u00ebsht\u00eb b\u00ebr\u00eb v\u00ebrtet e leht\u00eb: 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 n\u00eb fund, realizojm\u00eb nd\u00ebrtimin e imazhit ton\u00eb duke p\u00ebrdorur Maven. Si rezultat, kodi yn\u00eb burimor shnd\u00ebrrohet n\u00eb nj\u00eb imazh t\u00eb gatsh\u00ebm p\u00ebr konteiner, i cili tashm\u00eb mund t\u00eb ekzekutohet n\u00eb nj\u00eb mjedis konteiner\u00ebsh.<\/p>\n<p><img decoding=\"async\" alt=\"M\u00eb fal, OpenShift, nuk t\u00eb kemi vler\u00ebsuar mjaftuesh\u00ebm dhe t\u00eb kemi marr\u00eb p\u00ebr t\u00eb dh\u00ebn\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>\nJa, tani mund t\u00eb ekzekutojm\u00eb konteinerin me komand\u00ebn docker run, duke e mapuar sh\u00ebrbimin ton\u00eb n\u00eb portin 8080, n\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb mund t\u00eb aksesohet.<\/p>\n<pre><code class=\"plaintext\">docker run -i --rm -p 8080:8080 gcolman\/quarkus-hello-world\n<\/code><\/pre>\n<p><img decoding=\"async\" alt=\"M\u00eb fal, OpenShift, nuk t\u00eb kemi vler\u00ebsuar mjaftuesh\u00ebm dhe t\u00eb kemi marr\u00eb p\u00ebr t\u00eb dh\u00ebn\u00eb.\" src=\"\/wp-content\/uploads\/2020\/10\/4f46e13423d5027d85ebae2c98c926b8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Pas aktivizimit t\u00eb instanc\u00ebs s\u00eb konteinerit, mbetet vet\u00ebm t\u00eb kontrollojm\u00eb me komand\u00ebn curl n\u00ebse sh\u00ebrbimi yn\u00eb funksionon:<\/p>\n<p><img decoding=\"async\" alt=\"M\u00eb fal, OpenShift, nuk t\u00eb kemi vler\u00ebsuar mjaftuesh\u00ebm dhe t\u00eb kemi marr\u00eb p\u00ebr t\u00eb dh\u00ebn\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 konteinerin ton\u00eb n\u00eb depozit\u00ebn e imazheve t\u00eb konteiner\u00ebve<\/h4>\n<p>\nDerisa imazhi q\u00eb krijuam \u00ebsht\u00eb ruajtur lokal, n\u00eb magazin\u00ebn ton\u00eb lokale t\u00eb konteiner\u00ebve. N\u00ebse d\u00ebshirojm\u00eb t\u00eb p\u00ebrdorim k\u00ebt\u00eb imazh n\u00eb mjedisin ton\u00eb K8s, duhet ta ngarkojm\u00eb n\u00eb ndonj\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, (pothuajse) 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 vet\u00ebm nj\u00eb llogari n\u00eb dockerhub \u00ebsht\u00eb e nevojshme.<\/p>\n<p>Pra, ngarkojm\u00eb n\u00eb dockerhub dhe e d\u00ebrgojm\u00eb imazhin ton\u00eb aty.<\/p>\n<p><img decoding=\"async\" alt=\"M\u00eb fal, OpenShift, nuk t\u00eb kemi vler\u00ebsuar mjaftuesh\u00ebm dhe t\u00eb kemi marr\u00eb p\u00ebr t\u00eb dh\u00ebn\u00eb.\" src=\"\/wp-content\/uploads\/2020\/10\/fb5d81ee15ca7594277c5a05da298fbd.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h4>Hapi 3 \u2013 aktivizoni Kubernetes<\/h4>\n<p>\nKa shum\u00eb m\u00ebnyra p\u00ebr t\u00eb mbledhur konfigurimin e kubernetes p\u00ebr t\u00eb aktivizuar \"Hello World\" ton\u00eb, por ne do t\u00eb p\u00ebrdorim m\u00ebnyr\u00ebn m\u00eb t\u00eb thjesht\u00eb, sepse kjo \u00ebsht\u00eb m\u00ebnyra jon\u00eb\u2026<\/p>\n<p>N\u00eb fillim, aktivizoni 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 kthejm\u00eb kodin ton\u00eb dhe imazhin e kontejnerit n\u00eb konfigurimet e kubernetes. Me fjal\u00eb t\u00eb tjera, na nevojitet definicioni i pod-it dhe deployment-it me referenc\u00eb n\u00eb imazhin ton\u00eb n\u00eb dockerhub. 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 create deployment, duke treguar p\u00ebr imazhin ton\u00eb:<\/p>\n<p><img decoding=\"async\" alt=\"M\u00eb fal, OpenShift, nuk t\u00eb kemi vler\u00ebsuar mjaftuesh\u00ebm dhe t\u00eb kemi marr\u00eb p\u00ebr t\u00eb dh\u00ebn\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 \u2014 image=gcolman\/quarkus-hello-world:1.0.0-SNAPSHOT\n<\/code><\/pre>\n<p>\nMe k\u00ebt\u00eb komand\u00eb, ne i tham\u00eb KUK ton\u00eb t\u00eb krijoj\u00eb konfigurimin e deployment-it, 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 deployment q\u00eb do t\u00eb shkarkoj\u00eb imazhin ton\u00eb t\u00eb kontejnerit dhe do t\u00eb aktivizoj\u00eb pod-in n\u00eb klaster.<\/p>\n<h4>Hapi 5 \u2013 hapim qasjen n\u00eb sh\u00ebrbimin ton\u00eb<\/h4>\n<p>\nTani q\u00eb kemi nj\u00eb imazh kontejneri t\u00eb zhvilluar, \u00ebsht\u00eb koha t\u00eb mendojm\u00eb se si t\u00eb konfigurojm\u00eb qasjen e jashtme n\u00eb k\u00ebt\u00eb sh\u00ebrbim Restful, i cili \u00ebsht\u00eb programuar n\u00eb kodin ton\u00eb.<\/p>\n<p>Ka jan\u00eb shum\u00eb m\u00ebnyra. P\u00ebr shembull, mund t\u00eb p\u00ebrdorni komand\u00ebn expose p\u00ebr t\u00eb krijuar automatikisht komponent\u00ebt p\u00ebrkat\u00ebs Kubernetes, si\u00e7 jan\u00eb sh\u00ebrbimet dhe pik\u00ebt e hyrjes. N\u00eb fakt, k\u00ebshtu do t\u00eb veprojm\u00eb, duke ekzekutuar komand\u00ebn expose p\u00ebr objektin ton\u00eb deployment.<\/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 te opsioni \"--type\" i komand\u00ebs expose.<\/p>\n<p>Kur b\u00ebjm\u00eb expose dhe krijojm\u00eb komponent\u00ebt e nevojsh\u00ebm p\u00ebr t\u00eb drejtuar sh\u00ebrbimin ton\u00eb, na nevojitet q\u00eb t\u00eb jashtme t\u00eb mund t\u00eb lidhen me sh\u00ebrbimin hello-quarkus, i cili ndodhet brenda rrjetit ton\u00eb t\u00eb definuar me softuer. Dhe parametri <b>type<\/b> na lejon t\u00eb krijojm\u00eb dhe lidhim gj\u00ebra si\u00e7 jan\u00eb balancuesit e ngarkes\u00ebs p\u00ebr t\u00eb riorientuar trafikun n\u00eb k\u00ebt\u00eb rrjet.<\/p>\n<p>P\u00ebr shembull, duke specifikuar <b>type=LoadBalancer<\/b>, ne automatikisht aktivizojm\u00eb balancuesin e ngarkes\u00ebs n\u00eb nj\u00eb re publike p\u00ebr t'u lidhur me klusterin ton\u00eb Kubernetes. Kjo \u00ebsht\u00eb, sigurisht, e shk\u00eblqyer, por duhet t\u00eb kuptohet se nj\u00eb konfigurim i till\u00eb do t\u00eb jet\u00eb i lidhur ngusht\u00eb me nj\u00eb re publike specifike dhe do t\u00eb jet\u00eb m\u00eb e v\u00ebshtir\u00eb t\u00eb transferosh midis instancave t\u00eb Kubernetes n\u00eb mjedise t\u00eb ndryshme.<\/p>\n<p>N\u00eb shembullin ton\u00eb <b>type=NodePort<\/b>, domethen, qoft\u00eb se adresimi n\u00eb sh\u00ebrbimin ton\u00eb b\u00ebhet n\u00ebp\u00ebrmjet IP-s\u00eb s\u00eb nod\u00ebs dhe numrit t\u00eb portit. Ky variant lejon q\u00eb t\u00eb mos p\u00ebrdoren asnj\u00eb cloud publik, por k\u00ebrkon disa hapa shtes\u00eb. S\u00eb pari, ne kemi nevoj\u00eb p\u00ebr balancimin e ngarkes\u00ebs ton\u00eb, k\u00ebshtu q\u00eb do t\u00eb vendosim nj\u00eb balancues ngarkese NGINX n\u00eb klasterin ton\u00eb.<\/p>\n<h4>Hapi 6 \u2013 vendosim balancuesin e ngarkes\u00ebs<\/h4>\n<p>\nMinikube ka disa funksione platform\u00ebs q\u00eb thjeshtojn\u00eb krijimin e komponent\u00ebve t\u00eb nevojsh\u00ebm p\u00ebr qasje nga jasht\u00eb, si kontrollor\u00ebt e ingress. Minikube vjen me kontrollorin ingress Nginx, dhe ne thjesht duhet ta aktivizojm\u00eb dhe ta konfigurojm\u00eb.<\/p>\n<pre><code class=\"plaintext\">minikube addons enable ingress\n<\/code><\/pre>\n<p>\nTani, me nj\u00eb komand\u00eb, do t\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 Po funksionon 1 33m\n<\/code><\/pre>\n<p><\/p>\n<h4>Hapi 7 \u2013 Konfigurojm\u00eb ingress<\/h4>\n<p>\nTani duhet t\u00eb konfigurojm\u00eb kontrollorin ingress Nginx p\u00ebr t\u00eb pranuar k\u00ebrkesat hello-quarkus.<\/p>\n<p><img decoding=\"async\" alt=\"M\u00eb fal, OpenShift, nuk t\u00eb kemi vler\u00ebsuar mjaftuesh\u00ebm dhe t\u00eb kemi marr\u00eb p\u00ebr t\u00eb dh\u00ebn\u00eb.\" src=\"\/wp-content\/uploads\/2020\/10\/18183cb985436447cf15c501e4c6c3a3.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><img decoding=\"async\" alt=\"M\u00eb fal, OpenShift, nuk t\u00eb kemi vler\u00ebsuar mjaftuesh\u00ebm dhe t\u00eb kemi marr\u00eb p\u00ebr t\u00eb dh\u00ebn\u00eb.\" src=\"\/wp-content\/uploads\/2020\/10\/577f1e6218094b5ee23052d49869e838.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Dhe, p\u00ebrfundimisht, duhet ta aplikojm\u00eb k\u00ebt\u00eb konfigurat\u00eb.<\/p>\n<p><img decoding=\"async\" alt=\"M\u00eb fal, OpenShift, nuk t\u00eb kemi vler\u00ebsuar mjaftuesh\u00ebm dhe t\u00eb kemi marr\u00eb p\u00ebr t\u00eb dh\u00ebn\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=\"M\u00eb fal, OpenShift, nuk t\u00eb kemi vler\u00ebsuar mjaftuesh\u00ebm dhe t\u00eb kemi marr\u00eb p\u00ebr t\u00eb dh\u00ebn\u00eb.\" src=\"\/wp-content\/uploads\/2020\/10\/68fba4ef3d2762a97dc5be5de9e6b864.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Duke qen\u00eb se po i b\u00ebjm\u00eb t\u00eb gjitha k\u00ebto n\u00eb kompjuterin ton\u00eb, thjesht shtojm\u00eb IP-n\u00eb e nod\u00ebs son\u00eb n\u00eb skedarin \/etc\/hosts, p\u00ebr t\u00eb drejtuar k\u00ebrkesat http ndaj 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>\nTani \u00ebsht\u00eb, tani sh\u00ebrbimi yn\u00eb minikube \u00ebsht\u00eb n\u00eb dispozicion nga jasht\u00eb p\u00ebrmes kontrolluesit ingress Nginx.<\/p>\n<p><img decoding=\"async\" alt=\"M\u00eb fal, OpenShift, nuk t\u00eb kemi vler\u00ebsuar mjaftuesh\u00ebm dhe t\u00eb kemi marr\u00eb p\u00ebr t\u00eb dh\u00ebn\u00eb.\" src=\"\/wp-content\/uploads\/2020\/10\/a456f34d168d43e9236e4769722b7f5d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Pra, ishte e leht\u00eb, apo jo? Apo jo shum\u00eb?<\/h3>\n<p><img decoding=\"async\" alt=\"M\u00eb fal, OpenShift, nuk t\u00eb kemi vler\u00ebsuar mjaftuesh\u00ebm dhe t\u00eb kemi marr\u00eb p\u00ebr t\u00eb dh\u00ebn\u00eb.\" src=\"\/wp-content\/uploads\/2020\/10\/237015dc06bb9d12eb4cd2944dc6df58.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Iniciimi n\u00eb OpenShift (Code Ready Containers)<\/h3>\n<p>\nTani do t\u00eb shohim si t\u00eb b\u00ebhet kjo n\u00eb Red Hat OpenShift Container Platform (OCP).<\/p>\n<p>Si n\u00eb rastin e minikube, ne zgjedhim skem\u00ebn me klaster nj\u00eb-nodsh\u00ebm OpenShift n\u00eb form\u00ebn e Code Ready Containers (CRC). Deri tani ai quhej minishift dhe ishte i bazuar n\u00eb projektin OpenShift Origin, nd\u00ebrsa tani \u00ebsht\u00eb CRC dhe \u00ebsht\u00eb nd\u00ebrtuar mbi platform\u00ebn Red Hat\u2019ove OpenShift Container.<\/p>\n<p>K\u00ebtu, na falni, nuk mund t\u00eb ndalemi dhe t\u00eb mos themi: \"OpenShift \u00ebsht\u00eb i mrekulluesh\u00ebm!\"<\/p>\n<p>Fillimisht menduam t\u00eb shkruajm\u00eb se zhvillimi n\u00eb OpenShift nuk ndryshon nga zhvillimi n\u00eb Kubernetes. Dhe n\u00eb thelb \u00ebsht\u00eb k\u00ebshtu. Por gjat\u00eb shkrimit t\u00eb k\u00ebtij artikulli, na erdh\u00ebn n\u00eb mendje sa shum\u00eb hapa t\u00eb panevojsh\u00ebm duhet t\u00eb b\u00ebsh kur nuk ke OpenShift, dhe prandaj \u00ebsht\u00eb, p\u00ebrs\u00ebri, i mrekulluesh\u00ebm. Ne e duam kur gjith\u00e7ka b\u00ebhet leht\u00eb, dhe si\u00e7 \u00ebsht\u00eb leht\u00eb krahasuar me minikube q\u00eb shembulli yn\u00eb zbulohet dhe fillon n\u00eb OpenShift, realisht na frym\u00ebzoi p\u00ebr t\u00eb shkruar k\u00ebt\u00eb postim.<\/p>\n<p>Le t\u00eb p\u00ebrshkojm\u00eb procesin dhe t\u00eb shohim \u00e7far\u00eb do t\u00eb na nevojitet t\u00eb b\u00ebjm\u00eb.<\/p>\n<p>Pra, n\u00eb shembullin me minikube ne filluam me Docker... Prit, nuk \u00ebsht\u00eb m\u00eb e nevojshme q\u00eb n\u00eb makin\u00eb t\u00eb jet\u00eb instaluar Docker.<\/p>\n<p><b>Dhe git lokal nuk na nevojitet.<br \/>\nDhe Maven nuk \u00ebsht\u00eb i nevojsh\u00ebm.<br \/>\nDhe nuk \u00ebsht\u00eb e nevojshme t\u00eb krijoni manualisht imazhin e kontejnerit.<br \/>\nDhe nuk \u00ebsht\u00eb e nevojshme t\u00eb k\u00ebrkoni ndonj\u00eb depot t\u00eb imazheve t\u00eb kontenier\u00ebve.<br \/>\nDhe nuk \u00ebsht\u00eb e nevojshme t\u00eb instaloni kontrollin e ingress.<br \/>\nDhe as konfigurimi i ingress nuk \u00ebsht\u00eb i nevojsh\u00ebm.<\/b><\/p>\n<p>E kuptuat, po? P\u00ebr t\u00eb vendosur dhe nisur aplikacionin ton\u00eb n\u00eb OpenShift, nuk kemi nevoj\u00eb p\u00ebr asnj\u00eb nga gj\u00ebrat e lartp\u00ebrmendura. Procesi vet\u00eb duket si m\u00eb posht\u00eb.<\/p>\n<h4>Hapi 1 \u2013 Nisni klasterin tuaj OpenShift<\/h4>\n<p>\nNe p\u00ebrdorim Code Ready Containers nga Red Hat, i cili n\u00eb thelb \u00ebsht\u00eb i nj\u00ebjti Minikube, por me nj\u00eb klaster nj\u00eb-nod\u00ebsh t\u00eb plot\u00eb 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>\nSakt\u00ebsisht n\u00eb k\u00ebt\u00eb hap, thjesht\u00ebsia dhe leht\u00ebsia e OpenShift shfaqen n\u00eb gjith\u00eb shk\u00eblqimin e saj. Ashtu si n\u00eb t\u00eb gjitha shp\u00ebrndarjet e Kubernetes, ne kemi shum\u00eb m\u00ebnyra p\u00ebr t\u00eb nisur aplikacionin n\u00eb klaster. Dhe, si n\u00eb rastin e KUK, ne zgjedhim ve\u00e7an\u00ebrisht metod\u00ebn m\u00eb t\u00eb thjesht\u00eb.<\/p>\n<p>OpenShift gjithmon\u00eb \u00ebsht\u00eb nd\u00ebrtuar si nj\u00eb platform\u00eb p\u00ebr krijimin dhe nisjen e aplikacioneve n\u00eb kontejner\u00eb. Nd\u00ebrtimi i kontejner\u00ebve ka qen\u00eb gjithmon\u00eb nj\u00eb pjes\u00eb e pandashme e k\u00ebsaj platforme, prandaj k\u00ebtu ka shum\u00eb burime t\u00eb tjera Kubernetes p\u00ebr detyra t\u00eb caktuara.<\/p>\n<p>\u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c OpenShift&#8217;\u043e\u0432\u0441\u043a\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 Source 2 Image (S2I), \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u0437\u044f\u0442\u044c \u043d\u0430\u0448 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a (\u043a\u043e\u0434 \u0438\u043b\u0438 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b) \u0438 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u0439 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 OpenShift.<\/p>\n<p>P\u00ebr k\u00ebt\u00eb na nevojiten dy gj\u00ebra:<\/p>\n<ul>\n<li>Kodi yn\u00eb burimor n\u00eb nj\u00eb depo git<\/li>\n<li>Imazhi Builder, mbi t\u00eb cilin do t\u00eb kryhet nd\u00ebrtimi.<\/li>\n<\/ul>\n<p>\nEkzistojn\u00eb shum\u00eb imazhe t\u00eb till\u00eb, t\u00eb mb\u00ebshtetura si nga Red Hat ashtu edhe n\u00eb nivelin e komunitetit, dhe ne do t\u00eb p\u00ebrdorim imazhin OpenJDK, ngase po ndiej t\u00eb nd\u00ebrtoj nj\u00eb aplikacion Java.<\/p>\n<p>Mund ta nisni nd\u00ebrtimin S2I, 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 marr\u00eb imazhin build dhe kodin ton\u00eb burimor.<\/p>\n<p><img decoding=\"async\" alt=\"M\u00eb fal, OpenShift, nuk t\u00eb kemi vler\u00ebsuar mjaftuesh\u00ebm dhe t\u00eb kemi marr\u00eb p\u00ebr t\u00eb dh\u00ebn\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>\nE gjith\u00eb, aplikacioni yn\u00eb \u00ebsht\u00eb krijuar. Procesi S2I ka p\u00ebrfunduar k\u00ebto gj\u00ebra:<\/p>\n<ul>\n<li>Krijova nj\u00eb build-pod sh\u00ebrbimi p\u00ebr \u00e7do gj\u00eb q\u00eb lidhet me nd\u00ebrtimin e aplikacionit.<\/li>\n<li>Krijova konfigurimin e OpenShift Build.<\/li>\n<li>Shkarkova imazhin e builder n\u00eb regjistrin e brendsh\u00ebm docker t\u00eb OpenShift.<\/li>\n<li>Klonova \"Hello World\" n\u00eb repozitorin lokal.<\/li>\n<li>Pash\u00eb q\u00eb kishte nj\u00eb pom maven, pra 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 e imazhit t\u00eb kontejnerit.<\/li>\n<li>Fshiva build-pod-in sh\u00ebrbimi.<\/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 t\u00eb gjith\u00eb nd\u00ebrtimi ndodh ekskluzivisht brenda OpenShift, regjistri i brendsh\u00ebm Docker ndodhet brenda OpenShift, dhe procesi i nd\u00ebrtimit krijon t\u00eb gjitha komponent\u00ebt Kubernetes dhe i nis ato n\u00eb klaster.<\/p>\n<p>N\u00ebse ndjekim vizualisht nisjen e S2I n\u00eb konsol\u00eb, mund ta shohim se si gjat\u00eb kryerjes s\u00eb nd\u00ebrtimit niset build pod.<\/p>\n<p><img decoding=\"async\" alt=\"M\u00eb fal, OpenShift, nuk t\u00eb kemi vler\u00ebsuar mjaftuesh\u00ebm dhe t\u00eb kemi marr\u00eb p\u00ebr t\u00eb dh\u00ebn\u00eb.\" src=\"\/wp-content\/uploads\/2020\/10\/bd69c6e27813b1211a11e522f28f45b7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Tani le t\u00eb shohim log-et e pod-it builder: s\u00eb pari, atje shihet se si maven b\u00ebn pun\u00ebn e tij dhe shkarkon var\u00ebsi p\u00ebr nd\u00ebrtimin e aplikacionit ton\u00eb java.<\/p>\n<p><img decoding=\"async\" alt=\"M\u00eb fal, OpenShift, nuk t\u00eb kemi vler\u00ebsuar mjaftuesh\u00ebm dhe t\u00eb kemi marr\u00eb p\u00ebr t\u00eb dh\u00ebn\u00eb.\" src=\"\/wp-content\/uploads\/2020\/10\/326192f9f9373e451d601b77052d67d1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Pas pas, p\u00ebrfundimin e nd\u00ebrtimit maven, nis nd\u00ebrtimi i imazhit t\u00eb kontejnerit dhe pastaj ky imazh i nd\u00ebrtuar d\u00ebrgohet n\u00eb depo t\u00eb brendshme.<\/p>\n<p><img decoding=\"async\" alt=\"M\u00eb fal, OpenShift, nuk t\u00eb kemi vler\u00ebsuar mjaftuesh\u00ebm dhe t\u00eb kemi marr\u00eb p\u00ebr t\u00eb dh\u00ebn\u00eb.\" src=\"\/wp-content\/uploads\/2020\/10\/c97da4c17a8e275d39104126d0f87048.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Kjo \u00ebsht\u00eb e gjitha. Procesi i nd\u00ebrtimit p\u00ebrfundoi. Tani le t\u00eb sigurohemi se pod't dhe sh\u00ebrbimet e aplikacionit ton\u00eb jan\u00eb aktivizuar n\u00eb klaster.<\/p>\n<pre><code class=\"plaintext\">oc get service\n<\/code><\/pre>\n<p><img decoding=\"async\" alt=\"M\u00eb fal, OpenShift, nuk t\u00eb kemi vler\u00ebsuar mjaftuesh\u00ebm dhe t\u00eb kemi marr\u00eb p\u00ebr t\u00eb dh\u00ebn\u00eb.\" src=\"\/wp-content\/uploads\/2020\/10\/f16a098a096128073f305e0444061417.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Kjo \u00ebsht\u00eb e gjitha. Dhe vet\u00ebm nj\u00eb komand\u00eb. Tani 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, edhe \u00abHello World\u00bb yn\u00eb ka nevoj\u00eb p\u00ebr nj\u00eb router p\u00ebr t\u00eb drejtuar trafikun e jasht\u00ebm n\u00eb sh\u00ebrbimin brenda klasterit. N\u00eb OpenShift, kjo \u00ebsht\u00eb shum\u00eb e thjesht\u00eb. S\u00eb pari, komponenti i rutin\u00ebs HAProxy \u00ebsht\u00eb instaluar sipas parazgjedhjes n\u00eb klaster (mund t\u00eb z\u00ebvend\u00ebsohet me t\u00eb nj\u00ebjtin NGINX). S\u00eb dyti, ka burime speciale me mund\u00ebsi t\u00eb gjera konfigurimi, t\u00eb quajtura Routes, q\u00eb i ngjajn\u00eb objekteve Ingress n\u00eb Kubernetes-in e vjet\u00ebr (n\u00eb t\u00eb v\u00ebrtet\u00eb, Routes nga OpenShift kan\u00eb ndikuar shum\u00eb n\u00eb dizajnin e objekteve Ingress, t\u00eb cilat tani mund t\u00eb p\u00ebrdoren gjithashtu n\u00eb OpenShift), por p\u00ebr \u00abHello World\u00bb ton\u00eb, dhe n\u00eb t\u00eb gjitha rastet e tjera, na mjafton nj\u00eb Route standard pa konfigurim shtes\u00eb.<\/p>\n<p>P\u00ebr t\u00eb krijuar nj\u00eb FQDN t\u00eb routuar p\u00ebr 'Hello World' (po, n\u00eb OpenShift ka DNS t\u00eb tij p\u00ebr routes sipas emrave t\u00eb sh\u00ebrbimeve), ne thjesht do t\u00eb ekzekutojm\u00eb expose p\u00ebr sh\u00ebrbimin ton\u00eb:<\/p>\n<p><img decoding=\"async\" alt=\"M\u00eb fal, OpenShift, nuk t\u00eb kemi vler\u00ebsuar mjaftuesh\u00ebm dhe t\u00eb kemi marr\u00eb p\u00ebr t\u00eb dh\u00ebn\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 shikojm\u00eb vet\u00ebm Route-n e sapokrijuar, atje mund t\u00eb gjejm\u00eb FQDN dhe informacione t\u00eb tjera rreth routimit:<\/p>\n<pre><code class=\"plaintext\">oc get route\n<\/code><\/pre>\n<p><img decoding=\"async\" alt=\"M\u00eb fal, OpenShift, nuk t\u00eb kemi vler\u00ebsuar mjaftuesh\u00ebm dhe t\u00eb kemi marr\u00eb p\u00ebr t\u00eb dh\u00ebn\u00eb.\" src=\"\/wp-content\/uploads\/2020\/10\/dc59c36166605ef0a5a24b2b7ffa65b6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Dhe n\u00eb fund, qasemi n\u00eb sh\u00ebrbimin ton\u00eb nga shfletuesi:<\/p>\n<p><img decoding=\"async\" alt=\"M\u00eb fal, OpenShift, nuk t\u00eb kemi vler\u00ebsuar mjaftuesh\u00ebm dhe t\u00eb kemi marr\u00eb p\u00ebr t\u00eb dh\u00ebn\u00eb.\" src=\"\/wp-content\/uploads\/2020\/10\/fccf6cae1746fa59df2ff8ffb6973666.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Tani, kjo ishte me t\u00eb v\u00ebrtet\u00eb e leht\u00eb!<\/h3>\n<p>\nNe e duam Kubernetes dhe gjith\u00e7ka q\u00eb kjo teknologji na lejon t\u00eb b\u00ebjm\u00eb, si dhe ne e duam thjesht\u00ebsin\u00eb dhe leht\u00ebsin\u00eb. Kubernetes u krijua p\u00ebr t\u00eb thjeshtuar jasht\u00ebzakonisht operimin e kontejner\u00ebve t\u00eb shp\u00ebrndar\u00eb dhe t\u00eb shkall\u00ebzuesh\u00ebm, por p\u00ebr implementimin e aplikacioneve, thjesht\u00ebsia e tij sot nuk mjafton. K\u00ebtu hyn n\u00eb loj\u00eb OpenShift, i cili ec\u00ebn me koh\u00ebn dhe ofron Kubernetes t\u00eb orientuar kryesisht drejt zhvilluesit. U investua shum\u00eb p\u00ebr t\u00eb p\u00ebrshtatur platform\u00ebn OpenShift pik\u00ebrisht p\u00ebr zhvilluesin, duke p\u00ebrfshir\u00eb krijimin e mjeteve si S2I, ODI, Developer Portal, 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 se ky artikull ishte i \u0438\u043d\u0442\u0435\u0440\u0435\u0441an\u00e7\u00ebm dhe i dobish\u00ebm p\u00ebr ju. Burime shtes\u00eb, materiale dhe gj\u00ebra t\u00eb tjera t\u00eb dobishme p\u00ebr zhvillimin n\u00eb platform\u00ebn OpenShift mund t\u00eb gjenden 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 4.9.10 - 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. \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\" \/>\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) 4.9.10\" \/>\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. \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\" \/>\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 vler\u00ebsuam mjaftuesh\u00ebm dhe t\u00eb mor\u00ebm si t\u00eb mir\u00ebqen\u00eb | ProHoster","description":"Ky post \u00ebsht\u00eb shkruar pasi q\u00eb punonj\u00ebsit tan\u00eb kan\u00eb pasur shum\u00eb biseda me klient\u00ebt rreth zhvillimit t\u00eb aplikacioneve n\u00eb Kubernetes dhe specifikave t\u00eb k\u00ebtij zhvillimi n\u00eb OpenShift. Ne zakonisht fillojm\u00eb me th\u00ebnien se Kubernetes \u00ebsht\u00eb thjesht Kubernetes, nd\u00ebrsa OpenShift \u00ebsht\u00eb nj\u00eb platform\u00eb Kubernetes, si Microsoft AKS apo Amazon EKS. Secila nga k\u00ebto platforma ka","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. \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","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"},"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}]}}