Créer des Snaps en pointant simplement un formulaire Web vers un dépôt Git avec Fabrica : application à MicroK8s …
Tags: devops, cloud, containers, kubernetes
Published: 2020-06-07 10:59:27

---
title: Créer des Snaps en pointant simplement un formulaire Web vers un dépôt Git avec Fabrica : application à MicroK8s …
published: true
date: 2020-06-07 10:44:13 UTC
tags: devops,cloud,containers,kubernetes
canonical_url: https://medium.com/@deep75/cr%C3%A9ez-des-snaps-en-pointant-simplement-un-formulaire-web-vers-un-d%C3%A9p%C3%B4t-git-avec-fabrica-986c2944fe9f
---

![](https://cdn-images-1.medium.com/max/1024/1*ofPYWZhyL9hLAp0DMRo42A.jpeg)

Il existe de nombreuses façons de créer des snaps. Vous pouvez le faire sur votre système localement, en exécutant manuellement des commandes dans une fenêtre de terminal. 

Si vous avez un compte développeur dans le Snap Store , vous pouvez utiliser la fonctionnalité de construction intégrée pour créer des snaps. Vous pouvez également utiliser Launchpad, Electron Builder ou une gamme de dispositifs de CI/CD. 

Vous pouvez également gérer votre propre usine de construction de Snaps auto-hébergée comme cela va être le cas ici !

![](https://cdn-images-1.medium.com/max/800/0*JAKgN28OMa59R7WG)
![](https://cdn-images-1.medium.com/max/1200/0*QDx4Rz7Awlc0lRay.png)

> Snap est un système open source de déploiement de logiciels et de gestion de packages développé par Canonical pour le système d’exploitation Linux. Les packages, appelés snaps, et l’outil pour les utiliser, snapd, fonctionnent sur une gamme de distributions Linux permettant un package logiciel en amont indépendant de la distribution. Les packages d’applications Snap sont autonomes et fonctionnent sur une large gamme de distributions Linux. Cela diffère des approches de gestion de packages Linux traditionnelles, comme APT ou YUM, qui nécessitent des packages spécifiquement adaptés pour chaque distribution Linux. Ce qui ajoute un délai entre le développement d’applications et son déploiement pour les utilisateurs finaux.

> Les snaps eux-mêmes ne dépendent d’aucun «app store» et peuvent être obtenus à partir de n’importe quelle source. Ils peuvent donc être utilisés pour le déploiement de logiciels en amont. Lorsque des snaps sont déployés sur Ubuntu et d’autres versions de Linux, le Snap Store peut être utilisé comme back-end …

[Getting started | Snapcraft documentation](https://snapcraft.io/docs/getting-started)

![](https://cdn-images-1.medium.com/max/1024/0*CjNeUbPB8yhYsiFm.jpg)

**Fabrica** est un tout nouveau service Web hébergé localement, conçu pour aider les développeurs à créer des snaps. L’idée derrière Fabrica est simple: obtenir un système automatisé qui peut connecter des référentiels distants et créer des snaps à chaque fois qu’il y a un changement dans l’arborescence source. De cette façon, vous pouvez gérer plusieurs projets et générer des versions à jour, avec peu ou pas d’interaction …

[Install fabrica - your own snap build factory for Linux using the Snap Store | Snapcraft](https://snapcraft.io/fabrica)

Fabrica se compose de deux couches:

- Une interface utilisateur Web simple qui vous permet d’ajouter un nombre illimité de dépôts Git clonables accessibles publiquement. Vous pouvez choisir des branches différentes (ou multiples) pour chaque dépôt.

- Fabrica exécute un service de conteneur via l’hyperviseur LXD, qui génère des instances à l’intérieur desquelles les arborescences Git sont clonées et qui vont procéder à la construction des snaps. Vous pourrez ensuite «télécharger» les snaps générés, les tester et les utiliser.

Je commence donc à lancer un droplet Ubuntu 20.04 LTS dans DigitalOcean :

![](https://cdn-images-1.medium.com/max/1024/1*X1VTJLq7rCilkCxFa-Km_Q.png)

![](https://cdn-images-1.medium.com/max/1024/1*1b30h6iSYRuOqBor1N-a3Q.jpeg)

Et je procède à l’installation de Fabrica via l’installation de son snap :

![](https://cdn-images-1.medium.com/max/1024/1*IGoaWRtBaYtPVP_p8a3RWA.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*VFrT5slnRuUSTYA0mA-phg.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*Rhh8f8mTf3_5EMlctu5lLg.png)

> Les snaps sont conçus pour être des applications autonomes, avec une forte sécurité et une isolation du système sous-jacent et des autres logiciels qui y sont exécutés. Un accès granulaire aux ressources système est possible grâce à un mécanisme appelé interfaces. 

> Certaines interfaces sont connectées automatiquement ; lorsque vous installez un composant logiciel enfichable, les ressources demandées sont provisionnées automatiquement. Certaines, pour des raisons de sécurité, ne le sont pas.

![](https://cdn-images-1.medium.com/max/640/0*dBUjupJ8GzB9T2yY.jpg)

Dans ce cas particulier, j’accorde ici à Fabrica l’autorisation d’accéder au service LXD, ) monter / observer (lire la table de montage et les informations de quota) et à observer le système (lire le processus et les informations système) via ces commandes …

![](https://cdn-images-1.medium.com/max/1024/1*Ig8RcrZOcQ4z3pkKSVEE2Q.jpeg)

> Fabrica s’exécute et écoute alors sur le port TCP 8000. Pour le moment, la connexion est disponible via HTTP, et il n’y a pas de tunnel sécurisé ou d’authentification, ce qui signifie que vous devez tester et exécuter ce service uniquement sur des réseaux de confiance …

![](https://cdn-images-1.medium.com/max/1024/1*2-1_rTsNPxYi0aL3uecXNQ.jpeg)

Dans un précédent article, j’avais illustré la mise en oeuvre de MicroK8s via son snap :

[Edge Computing : Aperçu de la fonction clustering dans MicroStack et MicroK8s …](https://medium.com/@deep75/edge-computing-aper%C3%A7u-de-la-fonction-clustering-dans-microstack-et-microk8s-fd89fd28204c)

Je vais donc pour cette expérience ajouter le dépôt Git de MicroK8s en le pointant sur sa branche Master :

[ubuntu/microk8s](https://github.com/ubuntu/microk8s)

![](https://cdn-images-1.medium.com/max/1024/1*Q48fJVBapGCjDczMZXRBQA.jpeg)

[MicroK8s - Zero-ops Kubernetes for developers, edge and IoT | MicroK8s](https://microk8s.io/docs)

en renseignant le formulaire Web :

![](https://cdn-images-1.medium.com/max/1024/1*DBcSyBV-BXmT_zqX8Tg9FQ.jpeg)

Une fois le dépôt Git ajouté, je peux déclencher manuellement une génération de snap ou attendre une opération planifiée sur le dépôt. Fabrica interroge les dépôts Git ajoutés pour suivre d’éventuelles modifications toutes les cinq minutes. Et déclenchera la génération de snap si nécessaire …

Lancement ici manuel du “Build” :

![](https://cdn-images-1.medium.com/max/1024/1*uDJmJWCFrbGb9bWZo8ke8g.jpeg)

Je peux voir que Fabrica a généré localement un conteneur LXC pour la construction du snap :

![](https://cdn-images-1.medium.com/max/1024/1*zzLD0cC7t783lROszGf-fQ.jpeg)

Pendant qu’un build est en cours d’exécution, je peux inspecter ce qui se passe en cliquant sur l’icône «i» dans chaque ligne de build. Cela permet de dérouler le journal des logs et affichera les commandes en cours d’exécution à l’intérieur du conteneur lxc, comme l’extraction des données du dépôt Git, la mise à jour du système, la compilation ou d’autres commandes. Tout cela se produit indépendamment du système sous-jacent :

![](https://cdn-images-1.medium.com/max/1024/1*3tJqWVmM_RByR_75gb5QbA.jpeg)

Je peux voir la génération du snap pour MicroK8s se terminer au bout d’une trentaine de minutes :

![](https://cdn-images-1.medium.com/max/1024/1*hu7fKfVkuEuX648sh-74UA.jpeg)

Une fois le paquet snap créé, on peut utiliser le bouton «Télécharger» pour le récupérer à l’intérieur de l’environnement de construction du conteneur et le placer quelque part sur le disque de son choix :

![](https://cdn-images-1.medium.com/max/1024/1*Seg5lJRWD2f0tVZA91qATQ.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*8wcDHfb-bIp0EEWfXG8oMQ.jpeg)

Je le place localement sur mon Instance Ubuntu 20.04 LTS en exécution sur DigitalOcean :

![](https://cdn-images-1.medium.com/max/1024/1*AelSduuJO8eiryIKwaBYCg.jpeg)

Et je le teste sur cette dernière (avec la branche Master, je me retrouve donc avec un snap de MicroK\_s correspondant à la version 1.18.3 de Kubernetes):

![](https://cdn-images-1.medium.com/max/1024/1*gJ9rg2IZGfup5TGTduaH5g.png)

MicroK8s m’a généré un cluster K8s actif et opérationnel sur l’instance Ubuntu :

![](https://cdn-images-1.medium.com/max/1024/1*qReqFDin-dY_yP8EYZs5nQ.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*nXhEAYQ5-9bTNqNooOdyaQ.jpeg)

De cette manière, je peux éviter de passer par le Snap Store (qui propose les mêmes versions) 😋 :

![](https://cdn-images-1.medium.com/max/1024/1*28oKTx_1MqjKPPjDuEcmIg.jpeg)

Fabrica génère actuellement des builds uniquement pour l’architecture locale (comme AMD64) sur laquelle il va s’exécuter. Donc si vous voulez créer des builds pour d’autres architectures, vous devrez configurer Fabrica sur le matériel correspondant (comme une carte Raspberry Pi 4 pour ARMv8 par exemple) …

[Fabrica - Your self-hosted snap factory | Ubuntu](https://ubuntu.com/blog/fabrica-your-self-hosted-snap-factory)

On a vu que Fabrica propose une solution simple et pratique pour automatiser la construction de snaps en complètant les mécanismes de construction et d’intégration robustes déjà en place et en offrant une autre boîte à outils pratique aux développeurs. Certaines options et fonctionnalités sont actuellement indisponibles, comme l’authentification ou une période de déclenchement personnalisable mais elles arriveront probablement dans un futur proche …

![](https://cdn-images-1.medium.com/max/500/0*YSkfWS6TT3pTuBe_.jpg)

À suivre !