Apache Karaf sur Cloud Azure

Apache Karaf sur Cloud Azure

Dans les précédents articles, nous avons pu appréhender le « nouveau » Docker. Dans celui-ci, nous utiliserons une image Karaf Docker sur le Cloud Azure.

Adaptation de l’article :  « Apache Karaf on Azure Cloud » du blog Nanthrax  écrit par Jean-baptiste Onofré (Technical Advisor)

Création de l'image Karaf Docker

À partir d’une instance Karaf en cours d’exécution, nous installons l’exemple Karaf REST. Ainsi, nous changeons etc/org.apache.karaf.features.cfg pour ajouter l’exemple REST comme featuresBoot :

...
featuresRepositories = \ 
    mvn:org.apache.karaf.features/enterprise/4.2.1/xml/features, \
    mvn:org.apache.karaf.features/spring/4.2.1/xml/features, \
    mvn:org.apache.karaf.features/standard/4.2.1/xml/features, \
    mvn:org.apache.karaf.features/framework/4.2.1/xml/features, \
    mvn:org.apache.karaf.examples/karaf-rest-example-features/4.2.1/xml
...
featuresBoot = \ 
    instance/4.2.1, \
    package/4.2.1, \
    log/4.2.1, \
    ssh/4.2.1, \
    framework/4.2.1, \
    system/4.2.1, \
    eventadmin/4.2.1, \
    feature/4.2.1, \
    shell/4.2.1, \
    management/4.2.1, \
    service/4.2.1, \
    jaas/4.2.1, \
    deployer/4.2.1, \
    diagnostic/4.2.1, \
    wrap/2.5.4, \
    bundle/4.2.1, \
    config/4.2.1, \
    kar/4.2.1, \
    karaf-rest-example-provider
...

Nous packageons le dossier Karaf en archive tar.gz,plus précisément en kloud.tar.gz :

tar zcvf kloud.tar.gz apache-karaf-4.2.1

Maintenant, comme expliqué dans l’article image , nous créons l’image de Karaf Docker en utilisant assemblies/docker/build.sh fourni dans la distribution Karaf: lien GitHub

./build.sh --from-local-dist --archive ~/path/to/kloud.tar.gz --image-name kloud
Using karaf dist: /home/jbonofre/Workspace/kloud/kloud.tar.gz
Sending build context to Docker daemon  79.36MB
Step 1/10 : FROM java:8-jre-alpine
 ---> fdc893b19a14
Step 2/10 : ENV KARAF_INSTALL_PATH=/opt
 ---> Running in c48b1e2bf909
Removing intermediate container c48b1e2bf909
 ---> f6cc4d99d965
Step 3/10 : ENV KARAF_HOME $KARAF_INSTALL_PATH/apache-karaf
 ---> Running in ae61251f9332
Removing intermediate container ae61251f9332
 ---> 8092cc15e2d3
Step 4/10 : ENV PATH $PATH:$KARAF_HOME/bin
 ---> Running in 9ae9f2ebe44c
Removing intermediate container 9ae9f2ebe44c
 ---> b107423b2920
Step 5/10 : ARG karaf_dist=NOT_SET
 ---> Running in 15340610bc2d
Removing intermediate container 15340610bc2d
 ---> 075b9981d66b
Step 6/10 : ADD $karaf_dist $KARAF_INSTALL_PATH
 ---> dee79a14fe7d
Step 7/10 : RUN set -x &&   ln -s $KARAF_INSTALL_PATH/apache-karaf* $KARAF_HOME
 ---> Running in 6f1f292aa5f6
+ ln -s /opt/apache-karaf-4.2.1 /opt/apache-karaf
Removing intermediate container 6f1f292aa5f6
 ---> d2aea8c4ef8e
Step 8/10 : COPY docker-entrypoint.sh /
 ---> 454600e6f558
Step 9/10 : EXPOSE 8101 1099 44444 8181
 ---> Running in 581aba587bdc
Removing intermediate container 581aba587bdc
 ---> b4595b7e944d
Step 10/10 : ENTRYPOINT ["/docker-entrypoint.sh"]
 ---> Running in 1f49d86b563c
Removing intermediate container 1f49d86b563c
 ---> de6ac03845bd
Successfully built de6ac03845bd
Successfully tagged kloud:latest

Nous avons maintenant notre kloud Karaf Docker image :

gt; docker images REPOSITORY                                 TAG                 IMAGE ID            CREATED             SIZE kloud                                      latest              de6ac03845bd        58 seconds ago      198MB ...

Vous pouvez tester votre image :

gt; docker run -i --name kloud -p 8181:8181 kloud Starting Apache Karaf

Nous pouvons maintenant consulter le WADL de notre service REST disponible sur http://localhost:8181/cxf/booking?_wadl. Donc, l’image Docker est prête, c’est celle-ce que nous allons pousser et exécuter sur le Cloud Azure.

Création du registre des conteneurs Azure

Comme l’image n’est pas disponible sur DockerHub « public », nous allons créer notre registre de conteneurs sur Azure : similaire à DockerHub local sur une plate-forme cloud. Nous créons d’abord le registre des conteneurs dans les ressources Azure :

yupiik-article-blog-apache-karaf-docker-cloud-azure-1
yupiik-article-blog-apache-karaf-docker-cloud-azure-2

Nous avons maintenant notre registre de conteneurs disponible :

yupiik-article-blog-apache-karaf-docker-cloud-azure-3

Nous pouvons pousser notre image de kloud Karaf Docker sur ce registre de conteneurs.

Pousser une image de Karaf Docker sur le registre des conteneurs Azure

Nous avons maintenant notre registre de conteneurs disponible :

yupiik-article-blog-apache-karaf-docker-cloud-azure-2

Maintenant, nous nous connectons au docker Azure à partir de notre deamon docker local :

gt; docker login -u karaf -p xxxxx karaf.azurecr.io WARNING! Using --password via the CLI is insecure. Use --password-stdin. Login Succeeded

Nous pouvons maintenant créer une balise et appuyer sur le conteneur karaf.azurecr.io Azure Docker :

gt; docker tag kloud karaf.azurecr.io/kloud

gt; docker push karaf.azurecr.io/kloud The push refers to repository [karaf.azurecr.io/kloud] 8fc85780c222: Pushed df9688476ce7: Pushed 5e5beed17b78: Pushed 20dd87a4c2ab: Pushed 78075328e0da: Pushed 9f8566ee5135: Pushed latest: digest: sha256:be6ce4c0cf223cf16ebc6f22ce9458828a229214e71d9ba1dd9a1c16daf22bd7 size: 1573

Nous pouvons voir notre image sur notre registre de conteneurs Azure :

yupiik-article-blog-apache-karaf-docker-cloud-azure-5

Création et exécution d'un conteneur sur Azure

Maintenant que notre image kloud est sur le registre des conteneurs Azure, nous pouvons créer un conteneur Docker sur Azure. C’est l’instance Azure Container :

yupiik-article-blog-apache-karaf-docker-cloud-azure-6

Nous nommons notre container kloud :

yupiik-article-blog-apache-karaf-docker-cloud-azure-7

Nous configurons pour exposer le numéro de port 8181 (le numéro de port HTTP par défaut utilisé par Karaf) :

yupiik-article-blog-apache-karaf-docker-cloud-azure-8

Nous sommes prêts à créer notre conteneur (notez que nous utilisons le mode de démarrage run Karaf car le tty n’est pas lié par défaut sur cloud) :

yupiik-article-blog-apache-karaf-docker-cloud-azure-9

Nous pouvons voir notre journal de démarrage des conteneurs :

yupiik-article-blog-apache-karaf-docker-cloud-azure-10

Nous pouvons éventuellement nous connecter sur notre conteneur :

yupiik-article-blog-apache-karaf-docker-cloud-azure-11

Dans la vue d’ensemble des conteneurs, nous pouvons voir la charge et l’IP donnée à votre conteneur :

yupiik-article-blog-apache-karaf-docker-cloud-azure-12

Cela signifie que notre service d’exemple REST est disponible sur l’IP publique : conteneur d’exemple

yupiik-article-blog-apache-karaf-docker-cloud-azure-11

Il est également possible d’utiliser le DNS que nous avons défini sur l’instance conteneur, cela signifie que notre service REST est disponible sur dans ce lien :

yupiik-article-blog-apache-karaf-docker-cloud-azure-13

Prochaine étape : Azure Kubernetes Service

Maintenant que nous avons toutes les ressources disponibles pour utiliser le service de réseau Azure Cuba : nous pouvons avoir plusieurs conteneurs cloud fonctionnant comme Kubernetes POD et créer un service Kubernetes pour l’exemple REST.

Bloqué dans vos roadmaps ?

Vous souhaitez former vos équipes ?

fr_FRFrançais
en_GBEnglish (UK) fr_FRFrançais