Apache Karaf 4.2.0 apporte de nombreuses améliorations et de nouvelles fonctionnalités. L’une de ces dernières est le proxy HTTP.

L’idée de cette nouvelle fonction de proxy HTTP pour Karaf est de pouvoir « exposer » une application HTTP extérieure au serveur Karaf, dans le conteneur web Karaf (typiquement, une application HTTP historique dans votre système informatique exécutée en standalone).

Partons du principe que cette application est liée à http://localhost:9999/foo. Par souci de cohérence, vous voulez que Karaf soit votre principal conteneur http Web, agissant comme une passerelle/proxy pour tout autre application déployée. La fonction proxy HTTP de Karaf est faite pour vous.

 

Intégré dans la feature HTTP

 

Peut-être connaissez-vous déjà la feature http ? Cette feature installe le conteneur web Karaf. La nouvelle fonctionnalité de proxy a été ajoutée à la feature http. Il vous suffit donc d’exécuter dans Karaf la commande :

karaf@root()> feature:install http

Vous pouvez voir maintenant trois nouvelles commandes disponibles en plus de l’existante  http:list :

  • http:proxies, http:proxy-add et http:proxy-remove

Pour illustrer l’utilisation du proxy HTTP, prenons l’exemple de Karaf WebConsole.

 

Exemple: Faire passer la console web de Karaf par le proxy HTTP

 

Tout d’abord, voici la commande permettant d’installer la console web de Karaf :

karaf@root()> feature:install webconsole

Par défaut, la console web de Karaf est disponible sur l’adresse http://localhost:8181/system/console. Voici comment le vérifier avec http:list :

karaf@root()> http:list
ID │ Servlet          │ Servlet-Name             │ State       │ Alias               │ Url
───┼──────────────────┼──────────────────────────┼─────────────┼─────────────────────┼────────────────────────
85 │ ResourceServlet  │ /system/console/res:/res │ Deployed    │ /system/console/res │ [/system/console/res/*]
85 │ KarafOsgiManager │ ServletModel-2           │ Undeployed  │ /system/console     │ [/system/console/*]
85 │ KarafOsgiManager │ ServletModel-6           │ Deployed    │ /system/console     │ [/system/console/*]

 

Cependant, nous voulons simplifier cette URL et utiliser /webconsole pour le contexte HTTP de la WebConsole.

Pour ce faire, nous pouvons substituer l’emplacement actuel de la console web par une autre en utilisant la commande :

karaf@root()> http:proxy-add /webconsole http://localhost:8181/system/console

Voici alors comment se présente le proxy :

 

karaf@root()> http:proxies
URL         │ ProxyTo
────────────┼─────────────────────────────────────

/webconsole │ http://localhost:8181/system/console

 

 

Nous pouvons maintenant accéder à la console web en utilisant http://localhost:8181/webconsole. Karaf, dans son rôle de serveur proxy, enverra la requête à http://localhost:8181/system/console.

 

Nous avons vu, dans cet exemple, comment lier une application HTTP Karaf exposée sur une URL à une autre URL.
Voyons maintenant un deuxième exemple, installant cette fois un proxy sur une application externe à Karaf.

 

Exemple: Utiliser Karaf comme serveur proxy de Kibana

 

Ce second exemple va ajouter une adresse proxy Kibana au conteneur web Karaf. Supposons que Kibana fonctionne sur le même serveur que celui de notre Karaf mais dans une JVM dédiée (pas celle de Karaf), et que nous voulons utiliser le conteneur Karaf comme proxy.

Nous avons juste besoin de modifier la configuration de Kibana pour utiliser une racine spécifique. Pour ce faire, dans le fichier config/kibana.yml, nous modifions la ligne suivante :

server.basePath: « /kibana »

Nous pouvons maintenant démarrer notre Kibana en exécutant la commande bin/kibana.

Maintenant, dans Karaf, ajoutons le proxy Kibana correspondant à la racine de Kibana définie ci-dessus:

 

karaf@root()> http:proxy-add /kibana http://localhost:5601

karaf@root()> http:proxies

URL     │ ProxyTo

────────┼──────────────────────

/kibana │ http://localhost:5601

 

Nous pouvons maintenant accéder à Kibana par le proxy Karaf, en utilisant l’adresse http://localhost:8181/kibana.

 

L’application web peut également être distante, comme par exemple:

 

karaf@root()> http:proxy-add /kibana http://remote_host:5601

Pourquoi avoir introduit cette fonctionnalité ?

 

Grâce à cette fonction de proxy, Karaf peut être le conteneur d’application central de votre écosystème, agissant comme une passerelle. Cela s’avère particulièrement intéressant pour deux nouvelles fonctionnalités de Karaf:

  • La fonctionnalité Karaf Docker qui permet de créer, gérer et contrôler des conteneurs docker à partir de Karaf. Les conteneurs docker embarquant des applications HTTP seront exposés par le proxy de Karaf ;
  • Le proxy HTTP Karaf sera utilisé dans Vineyard, un nouveau sous-projet Karaf actuellement en préparation et dédié à la gestion des API.

 

Cliquez ici pour en savoir plus concernant Apache Karaf et notre accompagnement personnalisé !
Découvrez notre dernier article au sujet de Kibana, ou faites appel à nos experts, ici.

 

Jean-Baptiste Onofré travaille quotidiennement sur les projets Apache utilisés dans divers produits. Technical Advisor, membre de l’Apache Software Foundation, il est également committer et membre PMC (Project Management Committee) d’une vingtaine de projets Apache, et a travaillé sur des projets majeurs comme Archiva, Camel, Karaf ou encore ServiceMix
Merci à Jean-Baptiste Onofré (blog.nanthrax.net – twitter.com/jbonofre)

Les articles que nous rédigeons sont le fruit 🍏 de plusieurs heures de dur labeur. Ainsi, nous vous serions reconnaissants de pas plagier nos travaux qui sont protégés par le droit d’auteur 📜. Toutefois, vous êtes libres de les partager ou de nous faire part de vos remarques.

Si vous avez trouvé une erreur sur cette page, vous pouvez nous en informer en sélectionnant le texte en question, et en appuyant sur Ctrl + Entrée. Merci 🙂 !

Le proxy HTTP d’Apache Karaf
5 (100%) 4 votes

Rapport de faute d’orthographe

Le texte suivant sera envoyé à nos rédacteurs :