{"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\/fr\/blog\/administrirovanie\/prosti-openshift-my-nedostatochno-czenili-tebya-i-prinimali-kak-dolzhnoe","title":{"rendered":"D\u00e9sol\u00e9, OpenShift, nous ne t'avons pas assez appr\u00e9ci\u00e9 et nous t'avons pris pour acquis","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Cet article a \u00e9t\u00e9 r\u00e9dig\u00e9 car nos employ\u00e9s ont eu de nombreuses conversations avec des clients sur le d\u00e9veloppement d'applications sur Kubernetes et les sp\u00e9cificit\u00e9s de ce type de d\u00e9veloppement sur OpenShift.<\/p>\n<p><img decoding=\"async\" alt=\"D\u00e9sol\u00e9, OpenShift, nous ne t&#039;avons pas assez appr\u00e9ci\u00e9 et nous t&#039;avons pris pour acquis\" src=\"\/wp-content\/uploads\/2020\/10\/ad447aeb80d3ae56ea4598cd959456de.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNous commen\u00e7ons g\u00e9n\u00e9ralement par le principe que Kubernetes est simplement Kubernetes, tandis qu'OpenShift est une plateforme Kubernetes, comme Microsoft AKS ou Amazon EKS. Chacune de ces plateformes a ses avantages, orient\u00e9s vers un public cible sp\u00e9cifique. Apr\u00e8s cela, la discussion \u00e9volue vers la comparaison des forces et des faiblesses de ces plateformes.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nEn gros, nous envisagions d'\u00e9crire cet article avec une conclusion du type \u00ab \u00c9coutez, peu importe o\u00f9 ex\u00e9cuter le code, sur OpenShift ou sur AKS, sur EKS, sur un Kubernetes personnalis\u00e9, peu importe, c'est du Kubernetes \u00bb <i>(pour abr\u00e9ger, appelons-le KUK)<\/i> \u2013 c'est vraiment simple, que ce soit l'un ou l'autre.<\/p>\n<p>Nous avions ensuite pr\u00e9vu de prendre un simple \u00ab Hello World \u00bb et d'utiliser cet exemple pour montrer ce qui est commun et ce qui diff\u00e9rencie KUK de la Red Hat OpenShift Container Platform (ci-apr\u00e8s OCP ou simplement OpenShift).<\/p>\n<p>Cependant, en r\u00e9digeant cet article, nous avons r\u00e9alis\u00e9 que nous \u00e9tions tellement habitu\u00e9s \u00e0 utiliser OpenShift que nous ne r\u00e9alisions pas \u00e0 quel point il avait grandi et s'\u00e9tait transform\u00e9 en une plateforme impressionnante, beaucoup plus qu'un simple distribution de Kubernetes. Nous avons tendance \u00e0 prendre pour acquis la maturit\u00e9 et la simplicit\u00e9 d'OpenShift, oubliant sa magnificence.<\/p>\n<p>Il est donc temps de se racheter en passant \u00e0 l'action, et maintenant nous allons comparer pas \u00e0 pas le d\u00e9ploiement de notre \u00ab Hello World \u00bb sur KUK et sur OpenShift, et nous allons le faire de mani\u00e8re aussi objective que possible (\u00e0 part peut-\u00eatre des expressions parfois subjectives). Si vous \u00eates int\u00e9ress\u00e9 par une opinion purement subjective \u00e0 ce sujet, vous pouvez la lire <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/swlh\/im-so-sorry-openshift-i-ve-taken-you-for-granted-f36fb47ea4d9\">ici (EN)<\/a><\/noindex>. Cet article se concentrera sur les faits et uniquement sur les faits.<\/p>\n<h3>Clusters<\/h3>\n<p>\nPour notre \u00ab Hello World \u00bb, nous avons besoin de clusters. D'abord, disons non \u00e0 tous les clouds publics pour \u00e9viter de payer pour les serveurs, les registries, les r\u00e9seaux, le transfert de donn\u00e9es, etc. Par cons\u00e9quent, nous choisissons un simple cluster \u00e0 n\u0153ud unique sur <noindex><a rel=\"nofollow\" href=\"https:\/\/minikube.sigs.k8s.io\/docs\/start\/\">Minikube<\/a><\/noindex> (pour KUK) et <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/products\/codeready-containers\/overview\">Code Ready Containers<\/a><\/noindex> (pour le cluster OpenShift). Ces deux options sont en r\u00e9alit\u00e9 tr\u00e8s simples \u00e0 installer, mais n\u00e9cessiteront pas mal de ressources sur votre ordinateur portable.<\/p>\n<p><img decoding=\"async\" alt=\"D\u00e9sol\u00e9, OpenShift, nous ne t&#039;avons pas assez appr\u00e9ci\u00e9 et nous t&#039;avons pris pour acquis\" src=\"\/wp-content\/uploads\/2020\/10\/01c748365253fc9e11e817876629ae7e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Compilation sur KUK<\/h3>\n<p>\nAlors, c'est parti.<\/p>\n<h4>\u00c9tape 1 \u2013 construisons notre image de conteneur<\/h4>\n<p>\nJe commencerai par d\u00e9ployer notre \u00ab Hello World \u00bb sur minikube. Pour cela, nous aurons besoin de :<\/p>\n<ol>\n<li>1. Docker install\u00e9.<\/li>\n<li>2. Git install\u00e9.<\/li>\n<li>3. Maven install\u00e9 (en fait, ce projet utilise le binaire mvnw, donc cela peut se faire sans lui).<\/li>\n<li>4. Le code source lui-m\u00eame, c'est-\u00e0-dire le clonage du d\u00e9p\u00f4t <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>\nLa premi\u00e8re chose \u00e0 faire est de cr\u00e9er un projet Quarkus. Ne vous inqui\u00e9tez pas si vous n'avez jamais travaill\u00e9 avec le site Quarkus.io \u2013 c'est facile. Il suffit de choisir les composants que vous souhaitez utiliser dans le projet (RestEasy, Hibernate, Amazon SQS, Camel, etc.), puis Quarkus configure d\u00e9j\u00e0 tout cela automatiquement sans votre intervention, en cr\u00e9ant un arch\u00e9type Maven et en le publiant sur GitHub. C'est-\u00e0-dire qu'il suffit de cliquer une seule fois \u2013 et c'est pr\u00eat. C'est pourquoi nous aimons Quarkus.<\/p>\n<p><img decoding=\"async\" alt=\"D\u00e9sol\u00e9, OpenShift, nous ne t&#039;avons pas assez appr\u00e9ci\u00e9 et nous t&#039;avons pris pour acquis\" src=\"\/wp-content\/uploads\/2020\/10\/39a62058d91f8443e77466d374d02d34.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>La mani\u00e8re la plus simple de builder notre 'Hello World' en tant qu'image de conteneur est d'utiliser les extensions quarkus-maven pour Docker, qui s'occupent de tout le travail n\u00e9cessaire. Avec l'arriv\u00e9e de Quarkus, cela est devenu vraiment facile : ajoutez l'extension container-image-docker et vous pouvez cr\u00e9er des images avec des commandes Maven.<\/p>\n<pre><code class=\"plaintext\">.\/mvnw quarkus:add-extension -Dextensions=\"container-image-docker\"\n<\/code><\/pre>\n<p>\nEt enfin, nous construisons notre image en utilisant Maven. En cons\u00e9quence, notre code source se transforme en une image de conteneur pr\u00eate \u00e0 \u00eatre ex\u00e9cut\u00e9e dans un environnement de conteneurs.<\/p>\n<p><img decoding=\"async\" alt=\"D\u00e9sol\u00e9, OpenShift, nous ne t&#039;avons pas assez appr\u00e9ci\u00e9 et nous t&#039;avons pris pour acquis\" 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>\nVoil\u00e0, c'est tout, maintenant vous pouvez ex\u00e9cuter le conteneur avec la commande docker run, en mappant notre service sur le port 8080 pour y acc\u00e9der.<\/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=\"D\u00e9sol\u00e9, OpenShift, nous ne t&#039;avons pas assez appr\u00e9ci\u00e9 et nous t&#039;avons pris pour acquis\" src=\"\/wp-content\/uploads\/2020\/10\/4f46e13423d5027d85ebae2c98c926b8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Une fois l'instance du conteneur d\u00e9marr\u00e9e, il suffit de v\u00e9rifier avec la commande curl que notre service fonctionne :<\/p>\n<p><img decoding=\"async\" alt=\"D\u00e9sol\u00e9, OpenShift, nous ne t&#039;avons pas assez appr\u00e9ci\u00e9 et nous t&#039;avons pris pour acquis\" src=\"\/wp-content\/uploads\/2020\/10\/1c1462f52d6a487863c21f8f72a09d1f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Donc, tout fonctionne, et c'\u00e9tait vraiment facile.<\/p>\n<h4>\u00c9tape 2 \u2013 envoyons notre conteneur dans le d\u00e9p\u00f4t d'images de conteneur.<\/h4>\n<p>\nPour l'instant, l'image que nous avons cr\u00e9\u00e9e est stock\u00e9e localement dans notre registre de conteneurs local. Si nous voulons utiliser cette image dans notre environnement K8S, nous devons la placer dans un autre d\u00e9p\u00f4t. Kubernetes ne dispose pas de telles fonctionnalit\u00e9s, nous allons donc utiliser Docker Hub. Parce que, d'une part, c'est gratuit, et d'autre part, (presque) tout le monde le fait.<\/p>\n<p>C'est aussi tr\u00e8s simple, il vous faut juste un compte sur Docker Hub.<\/p>\n<p>Alors, nous configurons Docker Hub et envoyons notre image l\u00e0-bas.<\/p>\n<p><img decoding=\"async\" alt=\"D\u00e9sol\u00e9, OpenShift, nous ne t&#039;avons pas assez appr\u00e9ci\u00e9 et nous t&#039;avons pris pour acquis\" src=\"\/wp-content\/uploads\/2020\/10\/fb5d81ee15ca7594277c5a05da298fbd.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h4>\u00c9tape 3 \u2013 d\u00e9marrons Kubernetes.<\/h4>\n<p>\nIl existe de nombreuses fa\u00e7ons de configurer Kubernetes pour ex\u00e9cuter notre 'Hello World', mais nous allons utiliser la plus simple, car c'est notre nature...<\/p>\n<p>Pour commencer, lan\u00e7ons le cluster minikube :<\/p>\n<pre><code class=\"plaintext\">minikube start\n<\/code><\/pre>\n<p><\/p>\n<h4>\u00c9tape 4 \u2013 d\u00e9ployons notre image de conteneur<\/h4>\n<p>\nNous devons maintenant transformer notre code et notre image de conteneur en configurations Kubernetes. En d'autres termes, nous avons besoin d'une d\u00e9finition de pod et de d\u00e9ploiement qui pointe vers notre image sur Docker Hub. L'un des moyens les plus simples de le faire est d'ex\u00e9cuter la commande create deployment en sp\u00e9cifiant notre image :<\/p>\n<p><img decoding=\"async\" alt=\"D\u00e9sol\u00e9, OpenShift, nous ne t&#039;avons pas assez appr\u00e9ci\u00e9 et nous t&#039;avons pris pour acquis\" 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>\nAvec cette commande, nous avons demand\u00e9 \u00e0 notre K8S de cr\u00e9er une configuration de d\u00e9ploiement, qui doit contenir la sp\u00e9cification du pod pour notre image de conteneur. Cette commande appliquera \u00e9galement cette configuration \u00e0 notre cluster Minikube et cr\u00e9era un d\u00e9ploiement qui t\u00e9l\u00e9chargera notre image de conteneur et lancera le pod dans le cluster.<\/p>\n<h4>\u00c9tape 5 \u2013 ouvrons l'acc\u00e8s \u00e0 notre service<\/h4>\n<p>\nMaintenant que nous avons d\u00e9ploy\u00e9 notre image de conteneur, il est temps de penser \u00e0 la configuration de l'acc\u00e8s externe \u00e0 ce service Restful, qui est en fait programm\u00e9 dans notre code.<\/p>\n<p>Il existe de nombreuses fa\u00e7ons de proc\u00e9der. Par exemple, nous pouvons utiliser la commande expose pour cr\u00e9er automatiquement les composants Kubernetes correspondants, tels que les services et les points de terminaison. C'est exactement ce que nous allons faire en ex\u00e9cutant la commande expose pour notre objet de d\u00e9ploiement :<\/p>\n<pre><code class=\"plaintext\">kubectl expose deployment hello-quarkus --type=NodePort --port=8080\n<\/code><\/pre>\n<p>\nPrenons un moment pour examiner l'option \u00ab --type \u00bb de la commande expose.<\/p>\n<p>Lorsque nous faisons l'expose et cr\u00e9ons les composants n\u00e9cessaires pour faire fonctionner notre service, nous devons, entre autres, nous assurer que l'ext\u00e9rieur peut se connecter au service hello-quarkus, qui se trouve dans notre r\u00e9seau d\u00e9fini par logiciel. Et le param\u00e8tre <b>type<\/b> nous permet de cr\u00e9er et de connecter des \u00e9l\u00e9ments comme des \u00e9quilibreurs de charge pour diriger le trafic vers ce r\u00e9seau.<\/p>\n<p>Par exemple, en sp\u00e9cifiant <b>--type=LoadBalancer<\/b>, nous initialisons automatiquement un \u00e9quilibreur de charge dans le cloud public pour se connecter \u00e0 notre cluster Kubernetes. C'est \u00e9videmment formidable, mais il faut comprendre qu'une telle configuration sera strictement li\u00e9e \u00e0 un cloud public particulier et qu'il sera plus difficile de la transf\u00e9rer entre les instances Kubernetes dans diff\u00e9rents environnements.<\/p>\n<p>Dans notre exemple <b>--type=NodePort<\/b>, c\u2019est-\u00e0-dire que l'acc\u00e8s \u00e0 notre service se fait via l'adresse IP du n\u0153ud et le num\u00e9ro de port. Cette option permet de ne pas utiliser de clouds publics, mais n\u00e9cessite quelques \u00e9tapes suppl\u00e9mentaires. Tout d'abord, nous avons besoin de notre propre r\u00e9partiteur de charge, donc nous allons d\u00e9ployer un r\u00e9partiteur de charge NGINX dans notre cluster.<\/p>\n<h4>\u00c9tape 6 \u2013 Installer le r\u00e9partiteur de charge<\/h4>\n<p>\nMinikube dispose de plusieurs fonctionnalit\u00e9s de plateforme facilitant la cr\u00e9ation des composants n\u00e9cessaires pour l'acc\u00e8s externe, comme les contr\u00f4leurs d'ingress. Minikube est livr\u00e9 avec un contr\u00f4leur d'ingress Nginx, et il ne nous reste plus qu'\u00e0 l'activer et le configurer.<\/p>\n<pre><code class=\"plaintext\">minikube addons enable ingress\n<\/code><\/pre>\n<p>\nMaintenant, avec une seule commande, nous allons cr\u00e9er un contr\u00f4leur d'ingress Ngnix qui fonctionnera \u00e0 l'int\u00e9rieur de notre cluster minikube :<\/p>\n<pre><code class=\"plaintext\">ingress-nginx-controller-69ccf5d9d8-j5gs9 1\/1 En cours d\u2019ex\u00e9cution 1 33m\n<\/code><\/pre>\n<p><\/p>\n<h4>\u00c9tape 7 \u2013 Configurer l'ingress<\/h4>\n<p>\nNous devons maintenant configurer le contr\u00f4leur d'ingress Nginx afin qu'il g\u00e8re les requ\u00eates hello-quarkus.<\/p>\n<p><img decoding=\"async\" alt=\"D\u00e9sol\u00e9, OpenShift, nous ne t&#039;avons pas assez appr\u00e9ci\u00e9 et nous t&#039;avons pris pour acquis\" src=\"\/wp-content\/uploads\/2020\/10\/18183cb985436447cf15c501e4c6c3a3.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><img decoding=\"async\" alt=\"D\u00e9sol\u00e9, OpenShift, nous ne t&#039;avons pas assez appr\u00e9ci\u00e9 et nous t&#039;avons pris pour acquis\" src=\"\/wp-content\/uploads\/2020\/10\/577f1e6218094b5ee23052d49869e838.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Et enfin, nous devons appliquer cette configuration.<\/p>\n<p><img decoding=\"async\" alt=\"D\u00e9sol\u00e9, OpenShift, nous ne t&#039;avons pas assez appr\u00e9ci\u00e9 et nous t&#039;avons pris pour acquis\" 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=\"D\u00e9sol\u00e9, OpenShift, nous ne t&#039;avons pas assez appr\u00e9ci\u00e9 et nous t&#039;avons pris pour acquis\" src=\"\/wp-content\/uploads\/2020\/10\/68fba4ef3d2762a97dc5be5de9e6b864.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Puisque nous faisons tout cela sur notre ordinateur, nous ajoutons simplement l'adresse IP de notre n\u0153ud dans le fichier \/etc\/hosts, afin de diriger les requ\u00eates http vers notre minikube sur le r\u00e9partiteur de charge NGINX.<\/p>\n<pre><code class=\"plaintext\">192.168.99.100 hello-quarkus.info\n<\/code><\/pre>\n<p>\nVoil\u00e0, maintenant notre service minikube est accessible de l'ext\u00e9rieur via le contr\u00f4leur d'ingress Nginx.<\/p>\n<p><img decoding=\"async\" alt=\"D\u00e9sol\u00e9, OpenShift, nous ne t&#039;avons pas assez appr\u00e9ci\u00e9 et nous t&#039;avons pris pour acquis\" src=\"\/wp-content\/uploads\/2020\/10\/a456f34d168d43e9236e4769722b7f5d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Alors, c'\u00e9tait facile, n'est-ce pas ? Ou pas vraiment ?<\/h3>\n<p><img decoding=\"async\" alt=\"D\u00e9sol\u00e9, OpenShift, nous ne t&#039;avons pas assez appr\u00e9ci\u00e9 et nous t&#039;avons pris pour acquis\" src=\"\/wp-content\/uploads\/2020\/10\/237015dc06bb9d12eb4cd2944dc6df58.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>D\u00e9ploiement sur OpenShift (Code Ready Containers)<\/h3>\n<p>\nVoyons maintenant comment cela se passe sur la plateforme de conteneurs Red Hat OpenShift (OCP).<\/p>\n<p>Comme pour minikube, nous choisissons le sch\u00e9ma d'un cluster \u00e0 n\u0153ud unique OpenShift sous forme de Code Ready Containers (CRC). Cela s'appelait auparavant minishift et \u00e9tait bas\u00e9 sur le projet OpenShift Origin, et maintenant c\u2019est CRC et cela repose sur la plateforme de conteneurs OpenShift de Red Hat.<\/p>\n<p>Ici, nous ne pouvons pas nous emp\u00eacher de dire : \u00ab OpenShift est formidable ! \u00bb<\/p>\n<p>Au d\u00e9part, nous pensions \u00e9crire que le d\u00e9veloppement sur OpenShift ne diff\u00e9rait pas de celui sur Kubernetes. Et en fait, c\u2019est vrai. Mais en r\u00e9digeant cet article, nous avons r\u00e9alis\u00e9 combien de mouvements suppl\u00e9mentaires \u00e9taient n\u00e9cessaires quand on n\u2019a pas OpenShift, ce qui prouve encore une fois que c'est formidable. Nous aimons quand les choses sont simples, et la facilit\u00e9 avec laquelle notre exemple se d\u00e9ploie et s'ex\u00e9cute sur OpenShift par rapport \u00e0 minikube nous a incit\u00e9s \u00e0 \u00e9crire cet article.<\/p>\n<p>Passons en revue le processus et voyons ce que nous devrons faire.<\/p>\n<p>Ainsi, dans l'exemple avec minikube, nous commencions avec Docker\u2026 Attendez, nous n'avons plus besoin que Docker soit install\u00e9 sur la machine.<\/p>\n<p><b>Et nous n'avons pas besoin de git local.<br \/>\nEt nous n'avons pas besoin de Maven.<br \/>\nEt il n'est pas n\u00e9cessaire de cr\u00e9er manuellement une image de conteneur.<br \/>\nEt il n'est pas n\u00e9cessaire de chercher un d\u00e9p\u00f4t d'images de conteneurs.<br \/>\nEt il n'est pas n\u00e9cessaire d'installer un contr\u00f4leur d'ingress.<br \/>\nEt il n'est pas non plus n\u00e9cessaire de configurer l'ingress.<\/b><\/p>\n<p>Vous comprenez, n'est-ce pas ? Pour d\u00e9ployer et ex\u00e9cuter notre application sur OpenShift, rien de ce qui pr\u00e9c\u00e8de n'est n\u00e9cessaire. Et le processus ressemble \u00e0 ceci.<\/p>\n<h4>\u00c9tape 1 \u2013 D\u00e9marrez votre cluster OpenShift<\/h4>\n<p>\nNous utilisons Code Ready Containers de Red Hat, qui est en fait le m\u00eame que Minikube, mais avec un cluster OpenShift \u00e0 n\u0153ud unique complet.<\/p>\n<pre><code class=\"plaintext\">crc start\n<\/code><\/pre>\n<p><\/p>\n<h4>\u00c9tape 2 \u2013 Construisez et d\u00e9ployez l'application dans le cluster OpenShift<\/h4>\n<p>\nC'est \u00e0 cette \u00e9tape que la simplicit\u00e9 et la commodit\u00e9 d'OpenShift brillent de tous leurs feux. Comme dans toutes les distributions Kubernetes, nous avons de nombreuses fa\u00e7ons de d\u00e9ployer une application dans le cluster. Et, comme dans le cas de K8s, nous choisissons d\u00e9lib\u00e9r\u00e9ment la m\u00e9thode la plus simple.<\/p>\n<p>OpenShift a toujours \u00e9t\u00e9 con\u00e7u comme une plateforme pour cr\u00e9er et ex\u00e9cuter des applications conteneuris\u00e9es. La construction de conteneurs a toujours \u00e9t\u00e9 une partie int\u00e9grante de cette plateforme, c'est pourquoi il existe de nombreuses ressources Kubernetes suppl\u00e9mentaires pour les t\u00e2ches correspondantes.<\/p>\n<p>Nous allons utiliser le processus Source 2 Image (S2I) d'OpenShift, qui offre plusieurs m\u00e9thodes pour prendre notre source (code ou fichiers binaires) et la transformer en une image de conteneur ex\u00e9cut\u00e9e dans un cluster OpenShift.<\/p>\n<p>Pour cela, nous aurons besoin de deux choses :<\/p>\n<ul>\n<li>Notre code source dans un d\u00e9p\u00f4t git<\/li>\n<li>Une image de builder, \u00e0 partir de laquelle la construction sera effectu\u00e9e.<\/li>\n<\/ul>\n<p>\nIl existe de nombreuses images comme celles-ci, support\u00e9es \u00e0 la fois par Red Hat et par la communaut\u00e9, et nous allons utiliser l'image OpenJDK, puisque je construis une application Java.<\/p>\n<p>Lancer une construction S2I peut se faire \u00e0 la fois via la console graphique d'OpenShift Developer et depuis la ligne de commande. Nous utiliserons la commande new-app, en lui indiquant o\u00f9 trouver l'image de builder et notre code source.<\/p>\n<p><img decoding=\"async\" alt=\"D\u00e9sol\u00e9, OpenShift, nous ne t&#039;avons pas assez appr\u00e9ci\u00e9 et nous t&#039;avons pris pour acquis\" 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>\nVoil\u00e0, notre application est cr\u00e9\u00e9e. Pendant ce temps, le processus S2I a effectu\u00e9 les actions suivantes :<\/p>\n<ul>\n<li>Il a cr\u00e9\u00e9 un pod de build pour toutes les t\u00e2ches li\u00e9es \u00e0 la construction de l'application.<\/li>\n<li>Il a cr\u00e9\u00e9 la configuration de l'OpenShift Build.<\/li>\n<li>Il a t\u00e9l\u00e9charg\u00e9 l'image de builder dans le registre interne Docker d'OpenShift.<\/li>\n<li>Il a clon\u00e9 \u00ab Hello World \u00bb dans le d\u00e9p\u00f4t local.<\/li>\n<li>J'ai remarqu\u00e9 qu'il y avait un maven pom, donc j'ai compil\u00e9 l'application avec maven.<\/li>\n<li>J'ai cr\u00e9\u00e9 une nouvelle image de conteneur contenant l'application Java compil\u00e9e et j'ai plac\u00e9 cette image dans le registre interne des conteneurs.<\/li>\n<li>J'ai cr\u00e9\u00e9 un d\u00e9ploiement Kubernetes avec les sp\u00e9cifications du pod, du service, etc.<\/li>\n<li>J'ai lanc\u00e9 le d\u00e9ploiement de l'image du conteneur.<\/li>\n<li>J'ai supprim\u00e9 le pod de build temporaire.<\/li>\n<\/ul>\n<p>\nCette liste contient beaucoup de choses, mais le principal est que toute la construction se fait exclusivement \u00e0 l'int\u00e9rieur d'OpenShift, le registre Docker interne se trouve \u00e0 l'int\u00e9rieur d'OpenShift, et le processus de construction cr\u00e9e tous les composants Kubernetes et les lance dans le cluster.<\/p>\n<p>Si on suit visuellement le lancement de S2I dans la console, on peut voir comment, lors de la construction, le pod de build se lance.<\/p>\n<p><img decoding=\"async\" alt=\"D\u00e9sol\u00e9, OpenShift, nous ne t&#039;avons pas assez appr\u00e9ci\u00e9 et nous t&#039;avons pris pour acquis\" src=\"\/wp-content\/uploads\/2020\/10\/bd69c6e27813b1211a11e522f28f45b7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Jetons maintenant un \u0153il aux journaux du pod builder : tout d'abord, on voit comment maven effectue son travail et t\u00e9l\u00e9charge les d\u00e9pendances pour construire notre application java.<\/p>\n<p><img decoding=\"async\" alt=\"D\u00e9sol\u00e9, OpenShift, nous ne t&#039;avons pas assez appr\u00e9ci\u00e9 et nous t&#039;avons pris pour acquis\" src=\"\/wp-content\/uploads\/2020\/10\/326192f9f9373e451d601b77052d67d1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Apr\u00e8s la fin de la construction maven, la construction de l'image du conteneur commence, puis cette image construite est envoy\u00e9e dans le d\u00e9p\u00f4t interne.<\/p>\n<p><img decoding=\"async\" alt=\"D\u00e9sol\u00e9, OpenShift, nous ne t&#039;avons pas assez appr\u00e9ci\u00e9 et nous t&#039;avons pris pour acquis\" src=\"\/wp-content\/uploads\/2020\/10\/c97da4c17a8e275d39104126d0f87048.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Tout est pr\u00eat, le processus de construction est termin\u00e9. V\u00e9rifions maintenant que les pods et les services de notre application ont \u00e9t\u00e9 lanc\u00e9s dans le cluster.<\/p>\n<pre><code class=\"plaintext\">oc get service\n<\/code><\/pre>\n<p><img decoding=\"async\" alt=\"D\u00e9sol\u00e9, OpenShift, nous ne t&#039;avons pas assez appr\u00e9ci\u00e9 et nous t&#039;avons pris pour acquis\" src=\"\/wp-content\/uploads\/2020\/10\/f16a098a096128073f305e0444061417.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>C'est tout. Et une seule commande. Il ne reste plus qu'\u00e0 exposer ce service pour un acc\u00e8s externe.<\/p>\n<h4>\u00c9tape 3 - exposer le service pour un acc\u00e8s externe<\/h4>\n<p>\nComme dans le cas du CHEF, notre \"Hello World\" a \u00e9galement besoin d'un routeur sur la plateforme OpenShift pour diriger le trafic externe vers le service \u00e0 l'int\u00e9rieur du cluster. Cela se fait tr\u00e8s simplement dans OpenShift. Tout d'abord, un composant de routage HAProxy est install\u00e9 par d\u00e9faut dans le cluster (on peut le remplacer par le m\u00eame NGINX). Deuxi\u00e8mement, il existe des ressources sp\u00e9ciales et hautement configurables appel\u00e9es Routes qui ressemblent aux objets Ingress du bon vieux Kubernetes (en fait, les Routes d'OpenShift ont beaucoup influenc\u00e9 la conception des objets Ingress, qui peuvent maintenant \u00eatre utilis\u00e9s dans OpenShift), mais pour notre \"Hello World\", et presque dans tous les autres cas, la Route standard sans configuration suppl\u00e9mentaire suffira.<\/p>\n<p>Pour cr\u00e9er un FQDN routable pour \"Hello World\" (oui, OpenShift a son propre DNS pour le routage par nom de service), nous allons simplement exposer notre service :<\/p>\n<p><img decoding=\"async\" alt=\"D\u00e9sol\u00e9, OpenShift, nous ne t&#039;avons pas assez appr\u00e9ci\u00e9 et nous t&#039;avons pris pour acquis\" 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>\nEn regardant la Route nouvellement cr\u00e9\u00e9e, on peut trouver le FQDN et d'autres informations de routage :<\/p>\n<pre><code class=\"plaintext\">oc get route\n<\/code><\/pre>\n<p><img decoding=\"async\" alt=\"D\u00e9sol\u00e9, OpenShift, nous ne t&#039;avons pas assez appr\u00e9ci\u00e9 et nous t&#039;avons pris pour acquis\" src=\"\/wp-content\/uploads\/2020\/10\/dc59c36166605ef0a5a24b2b7ffa65b6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Et enfin, acc\u00e9dons \u00e0 notre service depuis le navigateur :<\/p>\n<p><img decoding=\"async\" alt=\"D\u00e9sol\u00e9, OpenShift, nous ne t&#039;avons pas assez appr\u00e9ci\u00e9 et nous t&#039;avons pris pour acquis\" src=\"\/wp-content\/uploads\/2020\/10\/fccf6cae1746fa59df2ff8ffb6973666.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Eh bien, c'\u00e9tait vraiment facile !<\/h3>\n<p>\nNous aimons Kubernetes et tout ce que cette technologie permet, ainsi que la simplicit\u00e9 et la l\u00e9g\u00e8ret\u00e9. Kubernetes a \u00e9t\u00e9 con\u00e7u pour rendre l'exploitation des conteneurs distribu\u00e9s et \u00e9volutifs extraordinairement simple, mais aujourd'hui, cette simplicit\u00e9 n'est plus suffisante pour d\u00e9ployer des applications. C'est l\u00e0 qu'intervient OpenShift, qui suit le rythme et propose un Kubernetes principalement orient\u00e9 vers le d\u00e9veloppeur. De nombreux efforts ont \u00e9t\u00e9 d\u00e9ploy\u00e9s pour adapter la plateforme OpenShift au d\u00e9veloppeur, y compris la cr\u00e9ation d'outils tels que S2I, ODI, Developer Portal, OpenShift Operator Framework, int\u00e9gration avec les IDE, Developer Catalogues, int\u00e9gration avec Helm, monitoring et bien d'autres.<\/p>\n<p>Nous esp\u00e9rons que cet article vous a \u00e9t\u00e9 int\u00e9ressant et utile. Vous pouvez trouver des ressources suppl\u00e9mentaires, des mat\u00e9riaux et d'autres \u00e9l\u00e9ments utiles pour le d\u00e9veloppement sur la plateforme OpenShift sur le portail <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/\">Red Hat Developers<\/a><\/noindex>.<br \/>\n<br \/>Source : <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\/fr\/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=\"fr_FR\" \/>\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\/fr\/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\udd47D\u00e9sol\u00e9, OpenShift, nous ne t'avons pas assez appr\u00e9ci\u00e9 et t'avons pris pour acquis | ProHoster","description":"Cet article a \u00e9t\u00e9 r\u00e9dig\u00e9 car nos employ\u00e9s ont eu de nombreuses conversations avec des clients sur le d\u00e9veloppement d'applications sur Kubernetes et les sp\u00e9cificit\u00e9s de ce type de d\u00e9veloppement sur OpenShift.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/prosti-openshift-my-nedostatochno-czenili-tebya-i-prinimali-kak-dolzhnoe","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/97254","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=97254"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/97254\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/97255"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=97254"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=97254"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=97254"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}