Passer au playerPasser au contenu principal
  • il y a 3 mois
FRnOG 42 - Alexandre Devely (OBS) : abcdesktop.io - K8s VDI solution

Catégorie

🤖
Technologie
Transcription
00:00J'ai 15 minutes pour vous présenter abcdesktop.io.
00:06Je suis le matin du projet, je m'appelle Alexandre Devilly. Bonjour.
00:15Le projet est sous licence GNU GPL V2.
00:18Tout est hébergé sur github.com slash abcdesktop.io.
00:23Qu'est-ce que c'est qu'ABC Desktop ?
00:25C'est une solution de VDI entièrement cloud natif, basée sur Kubernetes.
00:34Ok, alors ça veut dire que chaque conteneur ou chaque application exécutée par les utilisateurs
00:41seront bien des conteneurs et seront gérés par Kubernetes.
00:46Et Kubernetes va nous permettre de répartir la charge sur l'ensemble du cluster.
00:51C'est une fonction qui est intrinsèque à Kubernetes.
00:53Donc chaque application qui s'exécute de manière graphique, c'est un conteneur.
00:58Et pour s'y connecter, on va simplement utiliser un navigateur web HTML5, c'est tout.
01:05Alors quand on dit, ok, on démarre des applications graphiques dans un conteneur,
01:10il y a un problème, c'est que l'application par défaut, il manque la couche graphique.
01:16Et Kubernetes, ça va nous permettre de faire autre chose.
01:21C'est que Kubernetes, on va pouvoir gérer les ressources qu'on va affecter aux applications.
01:25Exemple, Firefox, on va lui donner, allez, soyons généreux, un cœur et deux gigas de RAM.
01:31Comme ça, nos utilisateurs pourront aller sur YouTube.
01:33Si on souhaite exécuter une autre application, on va exécuter, par exemple, un petit terminal avec SSH
01:41et on va attribuer comme ressource système peut-être 128 mégas de RAM et puis un dixième de cœur.
01:48Ça suffira.
01:49Ok ?
01:51Vous allez me dire, ok, alors on a d'un côté un Firefox qui tourne dans un conteneur
01:56et de l'autre côté, on a un navigateur.
01:58Mais il manque un petit bout entre les deux.
02:01On va faire communiquer le Firefox, c'est en X11.
02:05Donc, c'est vraiment faire du neuf avec du vieux.
02:08Mais vieux dans le sens stable, dans le sens éprouvé.
02:13Stable des biens, quoi.
02:16On va faire communiquer le Firefox avec un serveur X11
02:18et on va choisir Tiger VNC.
02:21Donc, on va encore faire du plus vieux.
02:22Donc, VNC, c'est, vous vous souvenez, c'est port 5900 en TCP.
02:28Ouais, TCP.
02:29Et le problème, c'est que Tiger VNC, lui, il parle gentiment, mais donc en TCP.
02:35Et nous, on a un navigateur web et on voudrait pouvoir parler en WebSocket.
02:38Donc, on va utiliser un convertisseur, un proxy, quoi.
02:42Un proxy qui s'appelle WebSockify.
02:44Donc, PIP3 installe WebSockify.
02:46C'est une tuerie.
02:47C'est une spéciale hack.
02:47Donc, vous lui dites, voilà, je veux que tu te connectes sur tel port, tel IP.
02:53Et il vous explose le service en WebSocket.
02:56Bon, on n'est pas loin.
02:58Qu'est-ce qui nous manque ?
02:59Côté web, côté client,
03:02il va falloir s'envoyer et pouvoir récupérer des trams RFB,
03:06donc le protocole implémenté par VNC,
03:09et les décoder.
03:10Alors ça, on va utiliser nos VNC.
03:13C'est une librairie, c'est un autre projet open source,
03:15qui est capable, qui va gentiment créer un canvas.
03:19Alors, un canvas, c'est une zone géométrique dans la page HTML,
03:25dans laquelle le navigateur laisse faire le code JavaScript ou laisse faire du code.
03:30Et ça nous permet de plotter, finalement, un pixel,
03:33une coordonnée XY d'une couleur.
03:35Bon, on ne va pas plotter des pixels,
03:40on va simplement dessiner souvent des rectangles,
03:43et on va utiliser l'encodage qui est fourni en standard par Tiger VNC,
03:48c'est du MP4,
03:51et on fait du H.264.
03:54Ça, c'est cool.
03:55Pour le son et pour le microphone, on fait pareil,
03:58on refait du MP4 et on rebalance une WebSocket
04:01entre le navigateur et le serveur
04:05qui s'exécute sur le cluster Kubernetes.
04:11Et finalement, ce truc-là, c'est qu'un microservice.
04:13Et l'idée, c'est de dire qu'un poste de travail,
04:16donc un virtual desktop,
04:19c'est qu'un microservice.
04:20Il reçoit en entrée des événements souris,
04:24WM up, WM down.
04:27Il reçoit en entrée des événements clavier,
04:30quand vous tapez,
04:31qui est up, qui est down,
04:32et il nous répond,
04:34en fait, des bouts de rectangle
04:37à painter sur un canvas.
04:40C'est aussi simple que ça.
04:43Oui, mais ça sert à quoi, en fait, tout ça ?
04:47Ça nous permet d'exécuter des applis
04:50dans des conteneurs.
04:52OK.
04:54Je vous donne un exemple super simple.
04:56Chez Orange, il y a une très vieille appli,
04:58et j'ai un respect infini pour cette appli,
05:00qui gère toutes les parts du cuivre torsadé en France.
05:03OK.
05:06Cette appli, évidemment,
05:08Orange n'a aucun intérêt à la faire évoluer,
05:10parce que vous le savez tous,
05:11le réseau cuivre, c'est fini.
05:15Sauf que, pour se connecter à cette appli,
05:17il faut une JVM.
05:19Et cette JVM-là,
05:19elle ne s'installe plus sur Windows 10,
05:21et elle s'installe encore moins sur Windows 11.
05:23Vous l'imaginez bien.
05:25Comment est-ce qu'on fait ?
05:26On fout tout à la poubelle ?
05:28On réécrit l'appli ?
05:29Non.
05:31On va utiliser un conteneur,
05:34et ainsi, on va être souverain.
05:36Et on va gagner une souveraineté
05:38sur nos applications clientes.
05:41Et c'est juste essentiel aujourd'hui,
05:43la souveraineté.
05:45Malheureusement.
05:45On peut faire de l'authentification.
05:51Alors, on fait du LDAP V3,
05:53on supporte les posis que ça compte
05:54dans le LDAP V3.
05:56Ça supporte les actifs directories,
05:57les relations d'approbation
05:58ont tous les sens,
06:00les domaines de compte,
06:00les domaines de ressources.
06:02On fait de l'hôte 2.0,
06:04du Key Club,
06:05du Mobile Connect,
06:06et puis de l'Anonymous.
06:06Anonymous, c'est cool,
06:07parce qu'elle répond toujours oui.
06:10Démo ?
06:11Alors, on va se lancer vraiment
06:12sur une démo,
06:12on va tenter le coup.
06:14Hop !
06:15Ben ouais,
06:16si on ne sait pas drôle.
06:17Alors, il n'y a rien qui tourne
06:18là sur la machine, ça va.
06:19Il me faut juste un Chrome.
06:23Voilà, Google Chrome.
06:25Je lance Google Chrome.
06:29Et on va sur un site,
06:32hello.pepain.net.
06:33Et là, j'arrive donc
06:34sur la page d'accueil du portail.
06:38Le programme,
06:39enfin, le helm,
06:42embarque en plus
06:43un petit serveur LDAP
06:44juste pour faire des tests,
06:46pour avoir des comptes de tests.
06:47Donc, comme j'ai une mémoire
06:49de poisson rouge,
06:50je vais prendre ce compte-là,
06:52Philippe,
06:52pour la 42,
06:53on prend Philippe.
06:54Bouton droit, copier.
06:57Et je reviens
06:58et je vais m'authentifier
07:00avec l'annuel LDAP.
07:01Voilà.
07:03Et je tape
07:04le mot de passe,
07:06c'est FRY.
07:06ce compte dans l'annuel LDAP
07:10a un UID,
07:11c'est FRY.
07:15Jamais.
07:17Et là, qu'est-ce qui se passe ?
07:19Eh bien, en ce moment,
07:20ABC Desktop
07:21est en train de créer
07:22le pod de l'utilisateur.
07:23En fait, le truc
07:24avec le Tiger VNC
07:25et le WebSockify.
07:27En plus de ça,
07:28comme c'est des humains
07:29qui l'utilisent,
07:30on leur met une interface
07:31de type KDE
07:32à la Windows 11 Like
07:34avec le thème Windows 11.
07:37Waouh !
07:39Alors, on va démarrer
07:40une appli.
07:41Tiens, on va démarrer
07:41le petit terminal
07:43avec client SSA.
07:44Je clique dessus,
07:44ça démarre.
07:45C'est un conteneur.
07:47Et c'est réparti
07:48et distribué
07:48sur tout le cluster.
07:50Donc, si vous avez
07:50un cluster avec 50 nœuds,
07:53vous avez...
07:54Certains disent
07:54« Ah, mais Alex,
07:55j'ai le PC
07:56le plus puissant du monde. »
07:57Ouais, OK.
07:58Il n'est pas que pour toi,
07:59mais il y a...
08:00C'est assez rapide.
08:04Qu'est-ce qu'on a dit ?
08:05Tiens, on va faire
08:06un petit coup de SSH.
08:07Donc, je vais faire
08:07un SSH sur le contrôle plein.
08:11Alors...
08:12Ah, ça marche, le clavier.
08:17Sauf que j'ai pas mes lunettes.
08:18Donc, 192, 168.
08:20Voilà.
08:21Donc, je vais aller
08:21sur le serveur
08:22qui fait contrôle plein.
08:25Vas-y.
08:28Je renseigne le mot de passe.
08:29et on passe « Maître du monde ».
08:31Alors, je tape la commande
08:32« Sudo bash ».
08:33Pour les gens au fond,
08:34je vais faire l'écran qui parle.
08:38Et là, on va faire
08:39un cube CTL.
08:41CTL
08:42GetPod
08:43dans le namespace.
08:45Donc, je précise
08:46« moins N »
08:47« ABC Desktop ».
08:49J'appuie sur « Envoi ».
08:51Et ce qui est important de voir...
08:52Ah ouais, on ne voit rien du tout.
08:55Bon, là, je vais le souligner.
08:57On voit un pod
08:59qui est FRY
09:00et en fait,
09:01c'est notre pod.
09:03D'accord ?
09:03Donc, un user,
09:04c'est un pod,
09:05c'est un microservice.
09:07Il prend en entrée
09:08des événements clavier-souris
09:09et il nous répond
09:10des bitmaps
09:11en des rectangles bitmap, quoi.
09:15OK.
09:16On a dit que les applications
09:17ça pouvait être des pods aussi.
09:19Eh bien, on y va.
09:20On va démarrer une application.
09:21Je lance l'application
09:22QTerminal
09:26qui est un pod.
09:27Alors là, je ne la vois pas.
09:30Ah ouais, elle est là.
09:30Merci.
09:34Ouais, vas-y.
09:38Ah oui, il veut.
09:39Il est capable aussi
09:40de faire des copier-coller.
09:41Donc là, on voit l'application.
09:43Et ce qui est marrant,
09:43par exemple,
09:44c'est que cette application,
09:45elle a une adresse IP.
09:47OK.
09:48Je vais passer en fullscreen.
09:49Je recommence.
09:50Elle a une adresse IP.
09:51C'est là 10.244.0.70.
09:54Et notre pod, à nous,
09:56il a aussi une adresse IP,
09:57mais c'est une autre.
09:59Si je tape ici un IF config,
10:01bon, je ne vais pas le taper.
10:05Mon pod, il aura une autre adresse IP.
10:07Si je refais mon
10:09kubectl getpod tout à l'heure,
10:12eh bien, on voit que l'application
10:14terminale,
10:15elle apparaît ici.
10:18Et c'est fry-app-terminal quelque chose.
10:21Si on fait un kubectl
10:23delete pod,
10:24on va tuer l'application.
10:25Donc, je fais un copier-coller.
10:35Copy, paste.
10:36moins n
10:40abc desktop.
10:41Vous avez vu,
10:54l'application
10:54s'est fermée toute seule.
10:57D'accord ?
10:58Donc, ça montre bien
10:59qu'une application
10:59est un pod.
11:03On va fermer ça.
11:05On peut aussi, évidemment,
11:06lancer le Firefox
11:07que j'évoquais tout à l'heure.
11:09Donc là, je lance
11:09un petit navigateur web.
11:11C'est un conteneur.
11:13Là, c'est un éphéméral conteneur.
11:14Et on a le son aussi
11:16qui est disponible.
11:17Si je clique ici,
11:18hop, j'active le son.
11:21Et je renseigne.
11:22On peut aller voir un film.
11:24www.culturpub.fr
11:32Vous allez penser à autre chose.
11:36Et voilà,
11:38on va chercher une pub
11:38pour les Citroën.
11:40Tiens, c'est cool, ça.
11:40Et la pub...
11:46Ah ouais, Grace Jones.
11:47Non.
11:48Il y a du son sur ton PC, Philippe ?
11:52Attends, on va le filer.
11:59Il a gagné notre petit peu,
12:00ou pas, toi ?
12:01Bon, c'est la pub pour la Célix, ça.
12:10Célix de la beauté sauvage.
12:25Voilà, Célix de la beauté sauvage.
12:29C'est juste pour montrer
12:30qu'on a le son.
12:31On a aussi le microphone.
12:32On peut parler
12:33en faisant une recherche Google.
12:36Si je tape...
12:37Je vais cliquer sur le micro.
12:39Je l'active le microphone.
12:43Autoriser pendant la visite du site.
12:46Ouais, vas-y.
12:47Et je vais sur www.google.com.
13:00Là, je peux tout accepter
13:01parce que le file system est en RAM.
13:04Donc, c'est assez éphémère.
13:06Vous pouvez l'héberger n'importe où.
13:07Vous mettez pas le système en RAM.
13:09Et après, vous faites du Tor en sortie.
13:10C'est un bonheur.
13:13Donc, je clique sur le micro.
13:15Je vais autoriser l'accès
13:16au micro virtuel
13:17qui est implémenté,
13:18qui est bingué sur la socket.
13:20Et on va...
13:21Je vais taper un truc.
13:22Autoriser.
13:25Fnorg.
13:29Ouais, ça marche super bien.
13:30C'est torc.
13:33C'est torc.
13:35Ok.
13:37Fin de la démo.
13:39Je vais quitter.
13:40Et je reprends les slides.
13:42J'en ai...
13:45Contrôle L.
13:49Contrôle L.
13:49Super.
13:53Merci.
13:54Alors, à quoi ça sert ?
13:56Qui l'utilise ?
13:57C'est très utilisé,
13:58notamment chez EMBL.
14:01Alors, EMBL,
14:01ça ne vous dit pas grand-chose.
14:03C'est la filiale
14:04de tout ce qui est bio
14:05chapeauté par le CERN.
14:08Et ils s'en servent,
14:09notamment,
14:09pour proposer
14:12à des applications
14:13l'accès au GPU.
14:15Et typiquement,
14:16c'est des chercheurs.
14:17Ils sont à peu près
14:18une cinquantaine.
14:19Enfin, 500, pardon.
14:20500 chercheurs.
14:21Et ils ont besoin
14:21de pouvoir...
14:24Ils utilisent
14:24leur propre modèle.
14:26Donc,
14:26ce n'est pas un LLM.
14:27C'est un truc spécial
14:28capable de lire des vidéos
14:30et qui leur reste
14:31ça d'expérience
14:31de bio.
14:33Et ils ont besoin
14:35de lancer des applications.
14:36Donc,
14:37une des applications-là,
14:38c'est Chimerax.
14:39Ça ne vous dit pas grand-chose.
14:40Mais c'est capable
14:41de modéliser
14:42à la fois
14:43tout un environnement cellulaire
14:45et des bactéries
14:47et des attaques,
14:47des trucs comme ça.
14:48C'est absolument incroyable.
14:50Et en fait,
14:50l'appli,
14:51elle s'appuie
14:52sur les cartes NVIDIA
14:52et elle va lire
14:54tout ce qui s'est passé
14:55dans la vidéo.
14:57C'est beaucoup de data.
14:58C'est plus de...
15:00plus de 10 gigas
15:02à seconde, quoi.
15:03Donc,
15:03c'est pas mal.
15:04Donc,
15:04c'est trop de données
15:05en fait pour un humain.
15:07C'est la même chose
15:09pour la recherche
15:10sur le cancer.
15:11C'est qu'il y a
15:12trop de données
15:13à lire
15:13pour un simple radiologue.
15:15On peut s'en servir aussi
15:17pour faire de la remote admin.
15:19Souvenez-vous,
15:19à la FNOR 40,
15:20il y avait une super presse
15:21de Cilium
15:22où on s'amusait
15:23simplement à faire...
15:25On s'amusait...
15:26à modifier la CNI,
15:28donc la container network interface
15:29et on allait pouvoir
15:31rajouter des interfaces réseau
15:33sur un pod
15:33parce que par défaut,
15:34sur Kubernetes,
15:34quand vous démarrez un pod,
15:35vous avez une seule interface réseau,
15:37c'est le TH0.
15:38Et bien,
15:39avec Cilium,
15:40vous allez pouvoir rajouter
15:40des nouvelles interfaces
15:41et les bridgey
15:43en fait sur des VLAN.
15:43Et un exemple typique,
15:45c'est d'utiliser
15:46ABC Desktop
15:47pour faire de la remote admin.
15:49Par exemple,
15:50Jean-Louis,
15:50qui sera administrateur
15:51de tous les switches L2,
15:53et bien,
15:55Jean-Louis définit
15:56dans la NRLDAP.
15:57Dans la NRLDAP,
15:57on dit que Jean-Louis
15:58appartient au groupe
15:58des admins
15:59des switches
16:00tout ce qui est L2.
16:02Jean-Louis se connecte
16:03et il va récupérer
16:04pour son pod
16:05une interface réseau
16:07dans le VLAN.
16:09Là, par exemple,
16:10le VLAN 0,
16:11donc le network 0
16:12des l'admin
16:13et tout ce qui est
16:14out-of-band
16:16d'admin.
16:18C'est un exemple.
16:20Il y a une plateforme
16:21qui s'appelle
16:21demo.abc-destop.io.
16:23Vous pouvez y aller
16:24avec des notifications
16:25O2.0.
16:27Ça s'installe
16:27avec Helm.
16:28Jean-François Vincent
16:29a fait un super travail
16:30pour faire
16:32le déploiement
16:32via Helm.
16:34Et voilà.
16:36Qui l'utilise encore,
16:37c'est Orange.
16:38Il y a à peu près
16:382000 des stops
16:40par jour.
16:42EMBL
16:42et Weissr.
16:43Weissr,
16:44c'est des Allemands
16:45qui font des plastiques
16:46de haute précision.
16:49Tous les slides
16:50sont dispos
16:50sur abc-destop.io
16:52slash
16:52Norg.
16:53Merci beaucoup !
16:55Sous-titrage Société Radio-Canada

Recommandations