{"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\/de\/blog\/administrirovanie\/prosti-openshift-my-nedostatochno-czenili-tebya-i-prinimali-kak-dolzhnoe","title":{"rendered":"Entschuldige, OpenShift, wir haben dich nicht genug gesch\u00e4tzt und f\u00fcr selbstverst\u00e4ndlich gehalten","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Dieser Beitrag ist entstanden, da unser Team viele Gespr\u00e4che mit Kunden \u00fcber die Entwicklung von Anwendungen auf Kubernetes und die spezifischen Anforderungen dieser Entwicklung auf OpenShift hatte.<\/p>\n<p><img decoding=\"async\" alt=\"Entschuldige, OpenShift, wir haben dich nicht genug gesch\u00e4tzt und f\u00fcr selbstverst\u00e4ndlich gehalten\" src=\"\/wp-content\/uploads\/2020\/10\/ad447aeb80d3ae56ea4598cd959456de.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWir beginnen normalerweise mit der These, dass Kubernetes einfach Kubernetes ist, w\u00e4hrend OpenShift eine Kubernetes-Plattform ist, \u00e4hnlich wie Microsoft AKS oder Amazon EKS. Jede dieser Plattformen hat ihre eigenen Vorteile, die auf bestimmte Zielgruppen ausgerichtet sind. Im Anschluss flie\u00dft das Gespr\u00e4ch dann oft in einen Vergleich der St\u00e4rken und Schw\u00e4chen der jeweiligen Plattformen.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nIm Gro\u00dfen und Ganzen dachten wir dar\u00fcber nach, diesen Beitrag mit einem Fazit zu schreiben wie: \u201eEgal, wo man den Code ausf\u00fchrt \u2013 auf OpenShift, AKS, EKS oder auf einem beliebigen benutzerdefinierten Kubernetes (wir nennen es mal KUK) \u2013 es ist wirklich einfach, egal wo.\u201c <i>(Um es kurz zu machen, nennen wir es KUK)<\/i> \u2013 das gilt sowohl dort als auch da.<\/p>\n<p>Anschlie\u00dfend wollten wir ein einfaches \u201eHello World\u201c-Beispiel nehmen, um zu zeigen, was die Gemeinsamkeiten und Unterschiede zwischen KUK und der Red Hat OpenShift Container Platform (im Folgenden OCP oder einfach OpenShift) sind.<\/p>\n<p>W\u00e4hrend des Schreibens dieses Beitrags ist uns aufgefallen, dass wir uns so sehr an OpenShift gew\u00f6hnt haben, dass wir gar nicht bemerken, wie es sich zu einer beeindruckenden Plattform entwickelt hat, die weit mehr ist als nur eine Kubernetes-Distribution. Wir nehmen die Reife und Benutzerfreundlichkeit von OpenShift als selbstverst\u00e4ndlich hin und \u00fcbersehen dabei seine Brillanz.<\/p>\n<p>Es ist Zeit f\u00fcr eine aktive Auseinandersetzung, und jetzt werden wir schrittweise den Einsatz unseres \"Hello World\" sowohl in KUK als auch in OpenShift vergleichen, und das m\u00f6glichst objektiv (mit vielleicht gelegentlichen pers\u00f6nlichen Einsch\u00e4tzungen zum Thema). Wenn Sie an einer rein subjektiven Meinung zu diesem Thema interessiert sind, k\u00f6nnen Sie sie <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/swlh\/im-so-sorry-openshift-i-ve-taken-you-for-granted-f36fb47ea4d9\">hier lesen (EN)<\/a><\/noindex>. In diesem Beitrag werden wir uns auf Fakten und nur auf Fakten konzentrieren.<\/p>\n<h3>Cluster<\/h3>\n<p>\nF\u00fcr unser \"Hello World\" ben\u00f6tigen wir also Cluster. Um keine Kosten f\u00fcr Server, Register, Netzwerke, Daten\u00fcbertragungen usw. zu verursachen, sagen wir sofort \"nein\" zu \u00f6ffentlich zug\u00e4nglichen Clouds. Somit w\u00e4hlen wir einen einfachen Single-Node-Cluster auf <noindex><a rel=\"nofollow\" href=\"https:\/\/minikube.sigs.k8s.io\/docs\/start\/\">Minikube<\/a><\/noindex> (f\u00fcr KUK) und <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/products\/codeready-containers\/overview\">Code Ready Containers<\/a><\/noindex> (f\u00fcr den OpenShift-Cluster). Beide Optionen sind tats\u00e4chlich einfach zu installieren, ben\u00f6tigen jedoch eine erhebliche Menge an Ressourcen auf Ihrem Laptop.<\/p>\n<p><img decoding=\"async\" alt=\"Entschuldige, OpenShift, wir haben dich nicht genug gesch\u00e4tzt und f\u00fcr selbstverst\u00e4ndlich gehalten\" src=\"\/wp-content\/uploads\/2020\/10\/01c748365253fc9e11e817876629ae7e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Build auf KUK<\/h3>\n<p>\nAlso, legen wir los.<\/p>\n<h4>Schritt 1 \u2013 Erstellen unseres Container-Images<\/h4>\n<p>\nBeginnen wir damit, unser 'Hello World' auf minikube bereitzustellen. Dazu ben\u00f6tigen Sie:<\/p>\n<ol>\n<li>1. Installiertes Docker.<\/li>\n<li>2. Installiertes Git.<\/li>\n<li>3. Installiertes Maven (in diesem Projekt wird tats\u00e4chlich der mvnw-Binary verwendet, daher ist dies nicht unbedingt erforderlich).<\/li>\n<li>4. Den Quellcode selbst, d.h. ein Klon des Repositories <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>\nAls N\u00e4chstes m\u00fcssen wir ein Quarkus-Projekt erstellen. Keine Sorge, wenn Sie noch nie mit der Website Quarkus.io gearbeitet haben \u2013 es ist ganz einfach. W\u00e4hlen Sie einfach die Komponenten aus, die Sie im Projekt verwenden m\u00f6chten (RestEasy, Hibernate, Amazon SQS, Camel usw.), und Quarkus konfiguriert automatisch das Maven-Archetyp und stellt alles auf GitHub bereit. Das bedeutet, dass es nur ein Mausklick ben\u00f6tigt \u2013 und schon ist es fertig. Daf\u00fcr lieben wir Quarkus.<\/p>\n<p><img decoding=\"async\" alt=\"Entschuldige, OpenShift, wir haben dich nicht genug gesch\u00e4tzt und f\u00fcr selbstverst\u00e4ndlich gehalten\" src=\"\/wp-content\/uploads\/2020\/10\/39a62058d91f8443e77466d374d02d34.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Der einfachste Weg, unser 'Hello World' in ein Container-Image zu packen, besteht darin, die quarkus-maven-Erweiterungen f\u00fcr Docker zu verwenden, die die gesamte notwendigen Schritte erledigen. Mit der Einf\u00fchrung von Quarkus wurde es wirklich einfach: F\u00fcgen Sie die Erweiterung container-image-docker hinzu und Sie k\u00f6nnen Images mit Maven-Befehlen erstellen.<\/p>\n<pre><code class=\"plaintext\">.\/mvnw quarkus:add-extension -Dextensions=\"container-image-docker\"\n<\/code><\/pre>\n<p>\nUnd schlie\u00dflich erstellen wir unser Image mit Maven. Unser Quellcode wird somit zu einem einsatzbereiten Container-Image, das bereits in einer Container-Laufzeitumgebung gestartet werden kann.<\/p>\n<p><img decoding=\"async\" alt=\"Entschuldige, OpenShift, wir haben dich nicht genug gesch\u00e4tzt und f\u00fcr selbstverst\u00e4ndlich gehalten\" 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>\nDas ist alles, jetzt k\u00f6nnen wir den Container mit dem Befehl docker run starten und unseren Service auf Port 8080 mappen, um darauf zugreifen zu k\u00f6nnen.<\/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=\"Entschuldige, OpenShift, wir haben dich nicht genug gesch\u00e4tzt und f\u00fcr selbstverst\u00e4ndlich gehalten\" src=\"\/wp-content\/uploads\/2020\/10\/4f46e13423d5027d85ebae2c98c926b8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Nachdem die Container-Instanz gestartet ist, m\u00fcssen wir nur noch mit dem Befehl curl \u00fcberpr\u00fcfen, dass unser Service funktioniert:<\/p>\n<p><img decoding=\"async\" alt=\"Entschuldige, OpenShift, wir haben dich nicht genug gesch\u00e4tzt und f\u00fcr selbstverst\u00e4ndlich gehalten\" src=\"\/wp-content\/uploads\/2020\/10\/1c1462f52d6a487863c21f8f72a09d1f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Alles funktioniert also, und es war tats\u00e4chlich ganz einfach.<\/p>\n<h4>Schritt 2 \u2013 Wir schicken unseren Container in das Container-Image-Repository<\/h4>\n<p>\nBis jetzt wird das von uns erstellte Image lokal in unserem lokalen Container-Repository gespeichert. Wenn wir dieses Image in unserer Kubernetes-Umgebung verwenden m\u00f6chten, m\u00fcssen wir es in ein anderes Repository hochladen. In Kubernetes gibt es daf\u00fcr keine eigenen Funktionen, deshalb werden wir Docker Hub verwenden. Erstens, weil es kostenlos ist, und zweitens, weil das fast jeder so macht.<\/p>\n<p>Das ist auch sehr einfach, und man ben\u00f6tigt dazu nur ein Konto bei Docker Hub.<\/p>\n<p>Also, lassen Sie uns Docker Hub einrichten und unser Image dorthin hochladen.<\/p>\n<p><img decoding=\"async\" alt=\"Entschuldige, OpenShift, wir haben dich nicht genug gesch\u00e4tzt und f\u00fcr selbstverst\u00e4ndlich gehalten\" src=\"\/wp-content\/uploads\/2020\/10\/fb5d81ee15ca7594277c5a05da298fbd.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h4>Schritt 3 \u2013 Kubernetes starten<\/h4>\n<p>\nEs gibt viele M\u00f6glichkeiten, eine Kubernetes-Konfiguration f\u00fcr den Start unseres 'Hello World' zu erstellen, aber wir verwenden die einfachste, denn wir sind so...<\/p>\n<p>Zun\u00e4chst starten wir den Minikube-Cluster:<\/p>\n<pre><code class=\"plaintext\">minikube start\n<\/code><\/pre>\n<p><\/p>\n<h4>Schritt 4 \u2013 Unsere Container-Image bereitstellen<\/h4>\n<p>\nJetzt m\u00fcssen wir unseren Code und das Container-Image in Kubernetes-Konfigurationen umwandeln. Mit anderen Worten, wir ben\u00f6tigen eine Pod- und Deployment-Definition, die auf unser Container-Image bei Docker Hub verweist. Eine der einfachsten M\u00f6glichkeiten, dies zu tun, besteht darin, den Befehl 'create deployment' auszuf\u00fchren und auf unser Image zu verweisen:<\/p>\n<p><img decoding=\"async\" alt=\"Entschuldige, OpenShift, wir haben dich nicht genug gesch\u00e4tzt und f\u00fcr selbstverst\u00e4ndlich gehalten\" 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>\nMit diesem Befehl haben wir Kubernetes angewiesen, eine Deployment-Konfiguration zu erstellen, die die Pod-Spezifikation f\u00fcr unser Container-Image enthalten sollte. Dieser Befehl wendet auch diese Konfiguration auf unseren Minikube-Cluster an und erstellt ein Deployment, das unser Container-Image herunterl\u00e4dt und das Pod im Cluster startet.<\/p>\n<h4>Schritt 5 \u2013 Zugriffsberechtigungen f\u00fcr unseren Service einrichten<\/h4>\n<p>\nJetzt, da wir unser Container-Image bereitgestellt haben, ist es an der Zeit zu \u00fcberlegen, wie wir den externen Zugriff auf diesen RESTful-Service konfigurieren, der letztendlich in unserem Code programmiert ist.<\/p>\n<p>Hier gibt es viele M\u00f6glichkeiten. Zum Beispiel k\u00f6nnen wir den Befehl expose verwenden, um automatisch die entsprechenden Kubernetes-Komponenten wie Services und Endpoints zu erstellen. Genau das werden wir tun, indem wir den Befehl expose f\u00fcr unser Deployment-Objekt ausf\u00fchren:<\/p>\n<pre><code class=\"plaintext\">kubectl expose deployment hello-quarkus \u2014 type=NodePort \u2014 port=8080\n<\/code><\/pre>\n<p>\nLassen Sie uns einen Moment bei der Option \u201e\u2014 type\u201c des Befehls expose innehalten.<\/p>\n<p>Wenn wir expose ausf\u00fchren und die notwendigen Komponenten erstellen, um unseren Service zu starten, m\u00fcssen wir unter anderem sicherstellen, dass wir von au\u00dfen auf den Service hello-quarkus zugreifen k\u00f6nnen, der sich innerhalb unseres softwaredefinierten Netzwerks befindet. Der Parameter <b>type<\/b> erm\u00f6glicht es uns, Dinge wie Load-Balancer zu erstellen und zu verbinden, um den Verkehr in dieses Netzwerk zu leiten.<\/p>\n<p>Indem wir beispielsweise <b>type=LoadBalancer<\/b>, initialisieren wir automatisch einen Load-Balancer in der \u00f6ffentlichen Cloud, der eine Verbindung zu unserem Kubernetes-Cluster herstellt. Das ist nat\u00fcrlich gro\u00dfartig, aber man muss verstehen, dass eine solche Konfiguration stark an eine bestimmte \u00f6ffentliche Cloud gebunden ist und es schwieriger sein wird, sie zwischen Kubernetes-Instanzen in verschiedenen Umgebungen zu migrieren.<\/p>\n<p>In unserem Beispiel <b>type=NodePort<\/b>, das hei\u00dft, der Zugriff auf unseren Dienst erfolgt \u00fcber die IP-Adresse des Knotens und die Portnummer. Diese Option erm\u00f6glicht es, keine \u00f6ffentlichen Clouds zu nutzen, erfordert jedoch einige zus\u00e4tzliche Schritte. Zuerst ben\u00f6tigen wir einen eigenen Lastenausgleichsmechanismus, weshalb wir einen NGINX-Load-Balancer in unserem Cluster bereitstellen werden.<\/p>\n<h4>Schritt 6 \u2013 Lastenausgleichsmechanismus einrichten<\/h4>\n<p>\nMinikube bietet eine Reihe von Plattformfunktionen, die das Erstellen der ben\u00f6tigten Komponenten f\u00fcr den externen Zugriff erleichtern, wie z.B. Ingress-Controller. Minikube wird mit dem Nginx-Ingress-Controller geliefert, und wir m\u00fcssen ihn nur aktivieren und konfigurieren.<\/p>\n<pre><code class=\"plaintext\">minikube addons enable ingress\n<\/code><\/pre>\n<p>\nJetzt erstellen wir mit nur einem Befehl einen Nginx-Ingress-Controller, der innerhalb unseres Minikube-Clusters l\u00e4uft:<\/p>\n<pre><code class=\"plaintext\">ingress-nginx-controller-69ccf5d9d8-j5gs9 1\/1 Running 1 33m\n<\/code><\/pre>\n<p><\/p>\n<h4>Schritt 7 \u2013 Ingress konfigurieren<\/h4>\n<p>\nJetzt m\u00fcssen wir den Nginx-Ingress-Controller so einstellen, dass er Anfragen an hello-quarkus verarbeitet.<\/p>\n<p><img decoding=\"async\" alt=\"Entschuldige, OpenShift, wir haben dich nicht genug gesch\u00e4tzt und f\u00fcr selbstverst\u00e4ndlich gehalten\" src=\"\/wp-content\/uploads\/2020\/10\/18183cb985436447cf15c501e4c6c3a3.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><img decoding=\"async\" alt=\"Entschuldige, OpenShift, wir haben dich nicht genug gesch\u00e4tzt und f\u00fcr selbstverst\u00e4ndlich gehalten\" src=\"\/wp-content\/uploads\/2020\/10\/577f1e6218094b5ee23052d49869e838.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Und schlie\u00dflich m\u00fcssen wir diese Konfiguration anwenden.<\/p>\n<p><img decoding=\"async\" alt=\"Entschuldige, OpenShift, wir haben dich nicht genug gesch\u00e4tzt und f\u00fcr selbstverst\u00e4ndlich gehalten\" 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=\"Entschuldige, OpenShift, wir haben dich nicht genug gesch\u00e4tzt und f\u00fcr selbstverst\u00e4ndlich gehalten\" src=\"\/wp-content\/uploads\/2020\/10\/68fba4ef3d2762a97dc5be5de9e6b864.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Da wir das alles auf unserem Computer machen, f\u00fcgen wir einfach die IP-Adresse unseres Knotens in die Datei \/etc\/hosts ein, um HTTP-Anfragen an unser Minikube an den NGINX-Load-Balancer zu leiten.<\/p>\n<pre><code class=\"plaintext\">192.168.99.100 hello-quarkus.info\n<\/code><\/pre>\n<p>\nAlles klar, unser minikube-Service ist jetzt \u00fcber den Nginx Ingress-Controller extern erreichbar.<\/p>\n<p><img decoding=\"async\" alt=\"Entschuldige, OpenShift, wir haben dich nicht genug gesch\u00e4tzt und f\u00fcr selbstverst\u00e4ndlich gehalten\" src=\"\/wp-content\/uploads\/2020\/10\/a456f34d168d43e9236e4769722b7f5d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Na, das war doch einfach, oder? Oder nicht ganz?<\/h3>\n<p><img decoding=\"async\" alt=\"Entschuldige, OpenShift, wir haben dich nicht genug gesch\u00e4tzt und f\u00fcr selbstverst\u00e4ndlich gehalten\" src=\"\/wp-content\/uploads\/2020\/10\/237015dc06bb9d12eb4cd2944dc6df58.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Starten auf OpenShift (Code Ready Containers)<\/h3>\n<p>\nJetzt schauen wir uns an, wie das Ganze auf der Red Hat OpenShift Container Platform (OCP) funktioniert.<\/p>\n<p>Wie bei minikube w\u00e4hlen wir das Szenario mit einem einzelnen OpenShift-Cluster in Form von Code Ready Containers (CRC). Fr\u00fcher bekannt als minishift basierend auf dem OpenShift Origin-Projekt, ist dies jetzt CRC und baut auf der Red Hat OpenShift Container Platform auf.<\/p>\n<p>Hier k\u00f6nnen wir uns nicht zur\u00fcckhalten und m\u00fcssen sagen: \u201eOpenShift ist gro\u00dfartig!\u201c<\/p>\n<p>Urspr\u00fcnglich dachten wir, dass die Entwicklung auf OpenShift sich nicht von der Entwicklung auf Kubernetes unterscheidet. Im Grunde genommen ist das auch richtig. Doch w\u00e4hrend wir diesen Beitrag schrieben, erinnerten wir uns daran, wie viele unn\u00f6tige Schritte n\u00f6tig sind, wenn man kein OpenShift hat, und deshalb ist es, um es nochmal zu sagen, gro\u00dfartig. Wir lieben es, wenn alles einfach ist, und wie viel einfacher unser Beispiel im Vergleich zu minikube auf OpenShift bereitgestellt und gestartet wird, hat uns motiviert, diesen Beitrag zu schreiben.<\/p>\n<p>Lassen Sie uns den Prozess durchgehen und sehen, was wir tun m\u00fcssen.<\/p>\n<p>In unserem Beispiel mit minikube haben wir mit Docker begonnen... Stopp, wir ben\u00f6tigen Docker nicht mehr auf der Maschine.<\/p>\n<p><b>Und lokale git ben\u00f6tigen wir nicht.<br \/>\nUnd Maven ist nicht erforderlich.<br \/>\nUnd es ist nicht n\u00f6tig, das Container-Image manuell zu erstellen.<br \/>\nUnd wir m\u00fcssen kein Container-Image-Repository suchen.<br \/>\nUnd es ist nicht erforderlich, einen Ingress-Controller zu installieren.<br \/>\nUnd wir m\u00fcssen auch den Ingress nicht konfigurieren.<\/b><\/p>\n<p>Haben Sie es verstanden? Um unsere Anwendung in OpenShift bereitzustellen und zu starten, brauchen wir nichts davon. Der gesamte Prozess sieht wie folgt aus.<\/p>\n<h4>Schritt 1 \u2013 Starten Sie Ihren OpenShift-Cluster<\/h4>\n<p>\nWir verwenden Code Ready Containers von Red Hat, das im Grunde das gleiche wie Minikube ist, jedoch mit einem vollwertigen ein-Knoten-Openshift-Cluster.<\/p>\n<pre><code class=\"plaintext\">crc start\n<\/code><\/pre>\n<p><\/p>\n<h4>Schritt 2 \u2013 Bauen und Bereitstellen der Anwendung im OpenShift-Cluster<\/h4>\n<p>\nGerade in diesem Schritt zeigt sich die Einfachheit und Benutzerfreundlichkeit von OpenShift in vollem Umfang. Wie in allen Kubernetes-Distributionen haben wir viele M\u00f6glichkeiten, eine Anwendung im Cluster auszuf\u00fchren. Und wie im Fall von KUK w\u00e4hlen wir absichtlich die einfachste.<\/p>\n<p>OpenShift wurde immer als Plattform zum Erstellen und Ausf\u00fchren von Containeranwendungen konzipiert. Der Aufbau von Containern war schon immer ein wesentlicher Bestandteil dieser Plattform, weshalb es hier viele zus\u00e4tzliche Kubernetes-Ressourcen f\u00fcr die entsprechenden Aufgaben gibt.<\/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>Dazu ben\u00f6tigen wir zwei Dinge:<\/p>\n<ul>\n<li>Unseren Quellcode in einem Git-Repository.<\/li>\n<li>Ein Builder-Image, auf dessen Basis die Erstellung erfolgt.<\/li>\n<\/ul>\n<p>\nEs gibt viele solcher Images, sowohl von Red Hat als auch von der Community unterst\u00fctzt, und wir werden das OpenJDK-Image verwenden, da ich ein Java-Anwendung erstellen m\u00f6chte.<\/p>\n<p>Die S2I-Erstellung kann sowohl \u00fcber die grafische Konsole von OpenShift Developer als auch \u00fcber die Kommandozeile gestartet werden. Wir verwenden den Befehl new-app und geben an, wo das Builder-Image und unser Quellcode zu finden sind.<\/p>\n<p><img decoding=\"async\" alt=\"Entschuldige, OpenShift, wir haben dich nicht genug gesch\u00e4tzt und f\u00fcr selbstverst\u00e4ndlich gehalten\" 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>\nAlles klar, unsere Anwendung ist erstellt. W\u00e4hrenddessen hat der S2I-Prozess die folgenden Dinge ausgef\u00fchrt:<\/p>\n<ul>\n<li>Ich habe einen Service-Build-Pod f\u00fcr verschiedene Aufgaben im Zusammenhang mit der Anwendungserstellung erstellt.<\/li>\n<li>Ich habe die OpenShift Build-Konfiguration erstellt.<\/li>\n<li>Ich habe das Builder-Image im internen Docker-Registry von OpenShift heruntergeladen.<\/li>\n<li>Ich habe 'Hello World' in ein lokales Repository geklont.<\/li>\n<li>Ich habe gesehen, dass ein Maven-POM vorhanden ist, und daher habe ich die Anwendung mit Maven kompiliert.<\/li>\n<li>Ich habe ein neues Container-Image erstellt, das die kompilierte Java-Anwendung enth\u00e4lt, und dieses Image im internen Container-Registry gespeichert.<\/li>\n<li>Ich habe ein Kubernetes-Deployment mit den Spezifikationen f\u00fcr den Pod, den Service usw. erstellt.<\/li>\n<li>Ich habe das Deployment des Container-Images gestartet.<\/li>\n<li>Ich habe den Service-Build-Pod entfernt.<\/li>\n<\/ul>\n<p>\nIn dieser Liste gibt es viele Punkte, aber das Wichtigste ist, dass der gesamte Build ausschlie\u00dflich innerhalb von OpenShift stattfindet, das interne Docker-Registry befindet sich innerhalb von OpenShift, und der Build-Prozess erstellt alle Kubernetes-Komponenten und startet sie im Cluster.<\/p>\n<p>Wenn man die Ausf\u00fchrung von S2I in der Konsole visuell verfolgt, kann man sehen, wie der Build-Pod bei der Ausf\u00fchrung des Builds gestartet wird.<\/p>\n<p><img decoding=\"async\" alt=\"Entschuldige, OpenShift, wir haben dich nicht genug gesch\u00e4tzt und f\u00fcr selbstverst\u00e4ndlich gehalten\" src=\"\/wp-content\/uploads\/2020\/10\/bd69c6e27813b1211a11e522f28f45b7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Lassen Sie uns nun die Protokolle des Builder-Pods betrachten: Zuerst sieht man, wie Maven seine Arbeit erledigt und die Abh\u00e4ngigkeiten f\u00fcr den Build unserer Java-Anwendung herunterl\u00e4dt.<\/p>\n<p><img decoding=\"async\" alt=\"Entschuldige, OpenShift, wir haben dich nicht genug gesch\u00e4tzt und f\u00fcr selbstverst\u00e4ndlich gehalten\" src=\"\/wp-content\/uploads\/2020\/10\/326192f9f9373e451d601b77052d67d1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Nachdem der Maven-Build abgeschlossen ist, wird das Container-Image gebaut und anschlie\u00dfend in das interne Repository hochgeladen.<\/p>\n<p><img decoding=\"async\" alt=\"Entschuldige, OpenShift, wir haben dich nicht genug gesch\u00e4tzt und f\u00fcr selbstverst\u00e4ndlich gehalten\" src=\"\/wp-content\/uploads\/2020\/10\/c97da4c17a8e275d39104126d0f87048.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Der gesamte Build-Prozess ist nun abgeschlossen. Lassen Sie uns sicherstellen, dass die Pods und Services unserer Anwendung im Cluster gestartet wurden.<\/p>\n<pre><code class=\"plaintext\">oc get service\n<\/code><\/pre>\n<p><img decoding=\"async\" alt=\"Entschuldige, OpenShift, wir haben dich nicht genug gesch\u00e4tzt und f\u00fcr selbstverst\u00e4ndlich gehalten\" src=\"\/wp-content\/uploads\/2020\/10\/f16a098a096128073f305e0444061417.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Das war's. Und das mit nur einem Befehl. Jetzt m\u00fcssen wir nur noch diesen Service f\u00fcr den externen Zugriff verf\u00fcgbar machen.<\/p>\n<h4>Schritt 3 \u2013 Den Service f\u00fcr den externen Zugriff freigeben<\/h4>\n<p>\nWie beim KUB ben\u00f6tigt auch unser \u201eHello World\u201c auf der OpenShift-Plattform einen Router, um den externen Datenverkehr zu den Services im Cluster zu leiten. In OpenShift ist dies ganz einfach. Erstens ist im Cluster standardm\u00e4\u00dfig die Routing-Komponente HAProxy installiert (diese kann gegen NGINX ausgetauscht werden). Zweitens gibt es spezielle, anpassbare Ressourcen, die als Routes bezeichnet werden und an die Ingress-Objekte im klassischen Kubernetes erinnern (tats\u00e4chlich haben die OpenShift-Routes das Design der Ingress-Objekte beeinflusst, die nun ebenfalls in OpenShift verwendet werden k\u00f6nnen). F\u00fcr unser \u201eHello World\u201c und in vielen anderen F\u00e4llen reicht jedoch der Standard-Route ohne weitere Anpassungen aus.<\/p>\n<p>Um einen routbaren FQDN f\u00fcr \u201eHello World\u201c zu erstellen (ja, OpenShift hat seinen eigenen DNS f\u00fcr die Namensweiterleitung von Diensten), f\u00fchren wir einfach ein Expose f\u00fcr unseren Dienst aus:<\/p>\n<p><img decoding=\"async\" alt=\"Entschuldige, OpenShift, wir haben dich nicht genug gesch\u00e4tzt und f\u00fcr selbstverst\u00e4ndlich gehalten\" 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>\nWenn wir uns die gerade erstellte Route ansehen, finden wir den FQDN und weitere Routing-Informationen:<\/p>\n<pre><code class=\"plaintext\">oc get route\n<\/code><\/pre>\n<p><img decoding=\"async\" alt=\"Entschuldige, OpenShift, wir haben dich nicht genug gesch\u00e4tzt und f\u00fcr selbstverst\u00e4ndlich gehalten\" src=\"\/wp-content\/uploads\/2020\/10\/dc59c36166605ef0a5a24b2b7ffa65b6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Und schlie\u00dflich rufen wir unseren Dienst im Browser auf:<\/p>\n<p><img decoding=\"async\" alt=\"Entschuldige, OpenShift, wir haben dich nicht genug gesch\u00e4tzt und f\u00fcr selbstverst\u00e4ndlich gehalten\" src=\"\/wp-content\/uploads\/2020\/10\/fccf6cae1746fa59df2ff8ffb6973666.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Das war wirklich einfach!<\/h3>\n<p>\nWir lieben Kubernetes und alles, was diese Technologie erm\u00f6glicht, und wir sch\u00e4tzen Einfachheit und Benutzerfreundlichkeit. Kubernetes wurde entwickelt, um den Betrieb von verteilten, skalierbaren Containern erheblich zu vereinfachen, aber um Anwendungen jetzt einzuf\u00fchren, reicht diese Einfachheit oft nicht aus. Hier kommt OpenShift ins Spiel, das mit der Zeit geht und Kubernetes anbietet, das in erster Linie auf Entwickler ausgerichtet ist. Es wurde ein erheblicher Aufwand betrieben, um die OpenShift-Plattform speziell auf Entwickler zuzuschneiden, einschlie\u00dflich der Erstellung von Werkzeugen wie S2I, ODI, dem Entwicklerportal, dem OpenShift Operator Framework, der Integration mit IDEs, Entwicklertoolskatalogen, der Helm-Integration, Monitoring und vielen weiteren.<\/p>\n<p>Wir hoffen, dass dieser Artikel f\u00fcr Sie interessant und n\u00fctzlich war. Weitere Ressourcen, Materialien und andere n\u00fctzliche Dinge zur Entwicklung auf der OpenShift-Plattform finden Sie im Portal <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/\">Red Hat Developers<\/a><\/noindex>.<br \/>\n<br \/>Quelle: <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\/de\/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=\"de_DE\" \/>\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\/de\/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\udd47Entschuldige, OpenShift, wir haben dich nicht ausreichend gesch\u00e4tzt und f\u00fcr selbstverst\u00e4ndlich gehalten | ProHoster","description":"Dieser Beitrag entstand aus zahlreichen Gespr\u00e4chen unserer Mitarbeiter mit Kunden \u00fcber die Anwendungsentwicklung auf Kubernetes und die Besonderheiten dieser Entwicklung auf OpenShift. Wir beginnen normalerweise mit der Bemerkung, dass Kubernetes einfach Kubernetes ist, w\u00e4hrend OpenShift eine Kubernetes-Plattform ist, \u00e4hnlich wie Microsoft AKS oder Amazon EKS. Jede dieser Plattformen hat ihre eigenen","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/prosti-openshift-my-nedostatochno-czenili-tebya-i-prinimali-kak-dolzhnoe","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/97254","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=97254"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/97254\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/97255"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=97254"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=97254"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=97254"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}