# Qu’est-ce que Datalab Onyxia GENES ?

Onyxia est une application web permettant d'accéder à un environnement de travail disposant de multiples services liés à la Data (Jupyter, RStudio, Mongodb, Kafka, Mlflow etc...) sans avoir à se préoccuper du déploiement de l’infrastructure. 

Au-delà de la simple facilitation d'accès aux outils de traitement de données modernes, Onyxia promeut activement les bonnes pratiques en matière de traitement des données et de programmation, en favorisant la reproductibilité des résultats. 

Pour les élèves et chercheurs, Onyxia est une opportunité unique d'autoformation. Grâce à son interface intuitive, les étudiants peuvent explorer, expérimenter et approfondir leurs compétences en temps réel, tout en s'adaptant aux standards actuels du monde professionnel. 

Onyxia permet de travailler sur des environnements facilement reproductibles, grâces à l’enregistrement de la configuration des services et la capacité de paramétrer des scripts d’initialisation. 

Via Onyxia, chaque utilisateur disposera d'un répertoire Git et d'un espace de stockage de type S3, qui seront automatiquement connectés à chaque service que l'utilisateur créera. 

L’utilisation de Git permet de synchroniser le projet local avec un serveur distant, rendant la perte de code quasi impossible. Il permet également de conserver un historique complet des choix et modifications effectuées sur le projet, favorisant ainsi le partage des modifications avec d'autres utilisateurs. 

En ce qui concerne la solution de stockage de fichiers S3, celle-ci est un système de stockage d'objets basé sur le cloud, compatible avec l'API S3 d'Amazon :  

- Les fichiers stockés sont facilement accessibles depuis n'importe quel endroit via une simple URL, pouvant être facilement partagée.  
- De plus, l'accès aux fichiers stockés est possible directement dans les services de data science (R, Python, etc.) proposés sur le <a href="https://onyxia.lab.groupe-genes.fr/" target="_blank">Datalab</a>, sans nécessiter de copie préalable des fichiers localement, améliorant ainsi considérablement la reproductibilité des analyses. 
L'avantage d'Onyxia réside dans la possibilité de partager chaque service avec d'autres collaborateurs en un clic. 

## Les fonctionnalités du Datalab Onyxia GENES en bref : 
- Accès à un <a href="https://onyxia.lab.groupe-genes.fr/catalog/ide" target="_blank">Catalogue de services</a> déployable en libre-service 

- Les utilisateurs peuvent définir le nombre de <a href="https://code.groupe-genes.fr/aguyot-ensae/image-public/raw/branch/main/images-onyxia/onyxia-resources.png/" target="_blank">RAM, CPU et GPU</a> qu’ils souhaitent allouer à leurs services avec une limitation par utilisateur de : 5 services, 20 CPU, 50Go RAM, et 1 GPU. Ces limitations sont différentes concernant les groupes de projets.

- Possibilité de faire des demandes auprès du DSIT du GENES pour ajouter de nouveaux services au catalogue selon vos besoins, nous contacter sois sur notre teams <a href="https://teams.microsoft.com/l/team/19%3Ak2a7PAYG-0EO6vmypa7sBdB5hXUR5c3YBDcszO0wCe41%40thread.tacv2/conversations?groupId=050057b4-2f34-4149-9084-5cd8f14b48e5&tenantId=99578065-47e8-4c36-bbf8-4e1228cfb056" target="_blank">ici Datalab - GENES - Teams</a> ou via notre mail support à l’adresse support.informatique@ensae.fr. 

- Capacité de partager l'accès à vos services et ressources d'Onyxia avec un groupe de personnes. 

- Possibilité de spécifier un script init personnalisable exécuté au lancement des services, <a href="#init" target="_blank">plus de détails ici</a>. 

- Enregistrer, restaurer et partager la configuration de vos services avec vos collaborateurs, <a href="#configuration-general-du-catalogue-de-services" target="_blank">plus de détails ici</a>.

- <a href="https://onyxia.lab.groupe-genes.fr/my-secrets/" target="_blank">Intégration de secrets</a> sous forme de variables d'environnement dans les services du <a href="https://onyxia.lab.groupe-genes.fr/" target="_blank">Datalab</a>, permettant de stocker les informations sensibles de type clés d'API dans Vault et de les rendre accessibles dans les services sous forme de variable. (à rajouter lien vers guide) 

- Possibilités d’accéder et de créé des formations techniques sur différents outils mis à disposition pour vos collaborateurs ou élèves. Cette fonctionnalités sera ajoutée sous peu, dans le cas d'un enseignant par exemple, vous pourrez ajouter une formation/cours sur un sujet. Y ajouter des URLs de configuration de services, sur lequels les élèves pourront cliquées et qui déploiera automatiquement des services sur leurs interface Onyxia sur lequels ils pourront travailler/faire des exercices dans un environnements que vous avez entièrement paramétré. Cette méthode permet ainsi aux élèves d'avoir accès un environnement stable et reproductibles instantanément. L'Onyxia de l'Insee possède cette fonctionnalités qui est <a href="https://www.sspcloud.fr/formation" target="_blank">visible ici</a>.



## Présentation rapide d’Onyxia en vidéo :

 <a href="https://www.youtube.com/watch?v=FvpNfVrxBFM" target="_blank">
  <img src="https://user-images.githubusercontent.com/6702424/231314534-2eeb1ab5-5460-4caa-b78d-55afd400c9fc.png" alt="IMAGE ALT TEXT HERE">
</a>



## FAQ 


## Liens utiles
  -  <a href="https://documentation-dsit.lab.groupe-genes.fr/Services/pole-scientifique/Onyxia/docs/secrets/" target="_blank">Gestion des secrets</a>
  -  <a href="https://documentation-dsit.lab.groupe-genes.fr/Services/pole-scientifique/Onyxia/docs/stockage/" target="_blank">Stockages de données</a>
  -  <a href="https://documentation-dsit.lab.groupe-genes.fr/Services/pole-scientifique/Onyxia/docs/version/" target="_blank">Contrôle de version</a>
  -  <a href="  https://documentation-dsit.lab.groupe-genes.fr/Services/pole-scientifique/Onyxia/docs/terms/" target="_blank">Conditions général d'utilisations</a>



# Une plateforme de mutualisation 
Le projet Onyxia part du constat de difficultés communes rencontrées par les datascientists du secteur public : 

- des agents souvent isolés, du fait de la relative rareté des compétences data dans l'administration ; 
- des infrastructures inadaptées, aussi bien en matière de ressources que de technologies, qui constituent un frein à l'innovation ; 
- une difficulté à passer de l'expérimentation à la mise en production, du fait de multiples séparations (séparation physique, langage de développement, modes de travail) entre les directions métier et la production informatique.

Face à ce constat, le Datalab Onyxia GENES a été construit pour proposer une plateforme de mutualisation à plusieurs niveaux

- partage d'une infrastructure moderne, centrée autour du déploiement de services via des conteneurs, et dimensionnée pour les usages de data science ; 
- partage de méthodes, via une mutualisation des services de data science proposés, auxquels chacun peut contribuer ; 
- partage de connaissances, via des formations associées au Datalab ainsi que la constitution de commaunautés d'entraide centrées sur son utilisation.

!!! info
    Onyxia, Datalab Onyxia GENES : quelles différences ?

    [Onyxia ](https://github.com/InseeFrLab/onyxia.git)est un projet open-source de l'Insee qui propose une plateforme de services de _data science_, accessible via une application Web. Le [Datalab Onyxia Genes](https://onyxia.lab.groupe-genes.fr/) est une instance du projet Onyxia, hébergée au GENES.


# Principes fondamentaux 

L'architecture du Datalab est basée sur un ensemble de principes fondamentaux :  

- une production orientée data science, en proposant une infrastructure dimensionnée à la plupart des usages et un catalogue de services couvrant l'ensemble du cycle de vie des projets data ; 
- des choix qui favorisent l'autonomie des usagers, en évitant tout enfermement propriétaire et en permettant l'accès aux couches basses de l'infrastructure pour couvrir les besoins avancés et spécifiques ; 
- un projet 100% cloud-natif, mais également cloud-agnostique, permettant un déploiement simple sur n'importe quelle infrastructure ; 
- un projet complètement open-source, à la fois du point de vue de ses briques constitutives que de sa diffusion (licence MIT). 

# Offre de services 
Le Datalab est accessible via une <a href="https://onyxia.lab.groupe-genes.fr/" target="_blank">Interface utilisateur</a> moderne et réactive, centrée sur l'expérience utilisateur. Celle-ci constitue le liant technique entre les différentes composantes d'Onyxia :  

- des technologies open-source qui constituent l'état de l'art du déploiement et de l'orchestration de conteneurs, du stockage et de la sécurité ; 
- un catalogue de services et d'outils pour accompagner les projets de data science ; 
- une plateforme de formation et de documentation pour faciliter l'onboarding sur les technologies proposées. 

<div style="text-align:center;">Briques fondamentales du Datalab Onyxia</div>


<div style="text-align:center;">
    <img src="img/image2.png" alt="Screenshot">
</div>


Le catalogue de services est pensé de manière à accommoder l'essentiel des usages des data scientists, du développement en self-service à la mise en production de traitements ou d'application. L'ensemble du cycle de vie d'un projet data est ainsi couvert, et le catalogue des services est régulièrement étendu pour répondre aux nouveaux besoins des utilisateurs. 

<div style="text-align:center;">Un catalogue de services complet pour les projets de data science</div>  

<div style="text-align:center;">
    <img src="img/image3.png" alt="Screenshot">
</div>


# Un projet ouvert 
Le projet du Datalab Onyxia est résolument ouvert, à de multiples niveaux :  

- le Datalab est accessible via son <a href="https://onyxia.lab.groupe-genes.fr/" target="_blank">interface Web</a> à tous les agents du service public ainsi qu'aux élèves des écoles de statistique liées à l'Ensae (Cepe, Ensai, Ensae) ; 
- le code source ouvert et la modularité du projet rendent possible le déploiement d'une instance Onyxia personnalisée sur n'importe quelle infrastructure basée sur un cluster Kubernetes ; 
- le projet est ouvert aux contributions extérieures, qu'elles concernent le catalogue des services, l'interface graphique ou l'agencement des briques logicielles qui le constituent. 

# Première utilisation 
Visite guidée du Datalab 

Bienvenue sur le Datalab Onyxia, plateforme de libre service mutualisée de traitement de données, destinée aux statisticiens et _data scientists_ de l'Etat. Ce tutoriel propose une visite guidée du Datalab pour être rapidement opérationnel dans l'utilisation de ses services. 

Il s’agit d’une présentation sommaire n'expliquant pas de façon détaillé chaques paramétrages possible, ceux-ci sont expliqués point par point plus plus tard dans ce guide. Voici quelques liens de redirection vers les parties détaillées:
    - <a href="#mon-compte" target="_blank">Mon compte</a>
    - <a href="#catalogue-de-services" target="_blank">Catalogue de services</a>
    - <a href="#mes-services" target="_blank">Mes services</a>
    - <a href="#mes-secrets" target="_blank">Mes secrets</a>
    - <a href="#mes-fichiers" target="_blank">Mes fichiers</a>

 

!!! warning
    Les conditions d'utilisation du Datalab sont consultables à <a href="https://documentation-dsit.lab.groupe-genes.fr/Services/pole-scientifique/Onyxia/docs/terms/" target="_blank">ici</a>. Nous rappelons que le Datalab est destiné exclusivement au traitement de **données publiques et non-sensibles**. Des projets d'expérimentation mobilisant des données non ouvertes peuvent être menés en concertation avec l'équipe du Datalab, sous réserve de se conformer aux règles de sécurité spécifiques au projet.


# Le catalogue de services 
Le <a href="https://onyxia.lab.groupe-genes.fr/catalog/ide" target="_blank">catalogue de services</a> est au centre de l'utilisation du Datalab. Il propose un ensemble de services destinés aux traitements statistiques de données ainsi qu'à la gestion complète des projets de data science. 

![Screenshot](img/image4.png)

# Lancer un service 
Pour lancer un service, il suffit de cliquer sur le bouton `Lancer` du service désiré.  
![Screenshot](img/image5.png)

Une page centrée sur le service demandé s'ouvre alors, qui offre plusieurs possibilités :  

- cliquer à nouveau sur le bouton `Lancer` pour lancer le service avec sa configuration par défaut ; 

- personnaliser le nom que portera l'instance une fois le service lancé, **Attention**, si vous enregistrer la configuration d’un service et que celui-ci a le même nom d’un service que vous avez déjà enregistré, sa configuration sera écrasée ; 

- dérouler un menu de configuration afin de personnaliser la configuration du service avant de le lancer ;  

- sauvegarder une configuration personnalisée en cliquant sur le signet en haut à droite du service, ce qui vous permettra d’enregistrer l'entièreté de la configuration du service et de le relancer depuis l’onglet <a href="https://onyxia.lab.groupe-genes.fr/my-services" target="_blank">Mes services</a>. 

La configuration précise de S3, Kubernetes, Init etc... sur les services constitue un usage avancé, chaque onglet du site web seront expliqués en détails plus loin à la section <a href="#configuration-avancee-du-catalogue-de-services" target="_blank">Configuration avancée du Catalogue de services</a>. 

# Utiliser un service 
L'action de lancer un service amène automatiquement sur la page <a href="https://onyxia.lab.groupe-genes.fr/my-services" target="_blank">Mes services</a>, où sont listées toutes les instances en activité sur le compte de l'utilisateur. 

![Screenshot](img/image6.png)

Une fois le service lancé, un bouton `Ouvrir` apparaît qui permet l'accès au service. Un mot de passe et, selon les services, un nom d'utilisateur est généralement requis pour pouvoir utiliser le service. Ces informations sont disponibles dans le `README` associé au service, auquel on accède en cliquant sur le bouton du même nom.  

# Supprimer une instance 
Supprimer une instance d'un service s'effectue simplement en cliquant sur l'icône en forme de poubelle en dessous de l'instance. 


!!! danger
    Pour certains services, la suppression d'une instance entraîne la suppression de toutes les données associées, et cette action est irrémédiable. Il est donc nécessaire de toujours bien lire le `README` associé à l'instance, qui précise les conséquences d'une suppression de l'instance. De manière générale, il est très important de s'assurer que les données ainsi que le code utilisés sont sauvegardés avant de supprimer l'instance. L'idéal est de <a href="https://documentation-dsit.lab.groupe-genes.fr/Services/pole-scientifique/Onyxia/docs/version/" target="_blank">versionner son code</a> avec Git et de procéder à des sauvegardes régulières des données à l'aide du <a href="https://documentation-dsit.lab.groupe-genes.fr/Services/pole-scientifique/Onyxia/docs/stockage/" target="_blank">système de stockage S3</a>. 


!!! info
    Les ressources mises à disposition pour l'execution des services sont partagées entre les différents utilisateurs du Datalab. Veuillez à ne pas laisser en cours des services dont vous ne faites plus l'usage. Nous procédons parfois à une suppression systématique des instances inactives depuis un certain temps, afin de libérer des ressources.



# Partager un service 
Il est possible de partager un service à un groupe de personnes en cochant la case "Partager le service" à l'ouverture du service. Les autres membres du groupe verront le service et pourront l'utiliser. La création de groupes se fait en écrivant aux administrateurs sur <a href="https://teams.microsoft.com/l/team/19%3Ak2a7PAYG-0EO6vmypa7sBdB5hXUR5c3YBDcszO0wCe41%40thread.tacv2/conversations?groupId=050057b4-2f34-4149-9084-5cd8f14b48e5&tenantId=99578065-47e8-4c36-bbf8-4e1228cfb056" target="_blank">Teams</a> ou par mail à l'adresse support.informatique@ensae.fr. 

Pour un besoin ponctuel, il est aussi possible de partager un service que l'on a créé à une autre personne, **Attention** via cette méthode, une seule personne à la fois peut se connecter à un service. 

Il vous suffira donc de lui communiquer l'URL lors ce que vous êtes sur votre service (type <https://user-aaaaaaaaaaaaaa-xxxxxxx-x.lab.groupe-genes.fr/>): 

![Screenshot](img/image7.png)

Ainsi que le mot de passe du service, qui est configurable et récupérable de différentes manières, lors de la création du service dans le sous onglet “Security”: 

![Screenshot](img/image8.png)

**Cependant attention**, car par défaut lors de la configuration d’un service, le mot de passe sera toujours le mêmes et qui a été spécifié dans l’onglet Mon compte puis <a href="https://onyxia.lab.groupe-genes.fr/account/infos" target="_blank">Information du compte</a>: 


![Screenshot](img/image9.png)

Si vous ne vous rappelez plus du mot de passe que vous avez attribué lors de la configuration d’un service, celui-ci est affiché automatiquement à chaque fois que vous re-lancer votre service via l’onglet <a href="https://onyxia.lab.groupe-genes.fr/my-services" target="_blank">Mes services</a>: 

![Screenshot](img/image10.png)


La meilleure pratique est donc, pour un service que vous souhaitez partager directement en fournissant l’URL du service, de modifier le mot de passe par défaut lors de la création du service comme vu précédemment dans le sous onglet “Security”. 

Le nom d'utilisateur reste **Onyxia**. Par ailleurs il ne faut pas cocher Enable IP protection et Enable network policy dans l'onglet “Security”, par défaut elles ne sont pas cochées. **Pour rappel**, via cette méthode une seule personne à la fois peut se connecter à un service. 

# Groupe de projet
Lors ce que vous êtes affectés à un groupe de projet, en haut à gauche de l'interface d'Onyxia vous aurez un mini-menu déroulant "Projet" où vous aurez la possibilité de choisir les projets auquels vous êtes affectés ou votre espace personnel. 

Cela vous permettra de choisir les ressources auxquels vous souhaitez accéder, celle liées à votre groupe de projet ou vos ressources personnels. Cette option est visible uniquement si vous avez accès à un groupe de projet.
![Screenshot](img/image26.png)

Lors ce que vous avez sélectionné un projet, vous verrez uniquement les ressources liées à celui-ci et ne verrez pas les ressources de votre espace personnel, cela concerne les onglets "Mes Services, Mes Fichiers et Mes Secrets":
![Screenshot](img/image27.png)

# Mon compte 
Dans cet onglet vous pourrez modifier différents paramètres, les plus important étant : 

- Modification des comptes et jetons Gitlab, Github et Kaggle qui seront par lié par défaut a tous les services que vous créérez, disponible dans le sous onglet <a href="https://onyxia.lab.groupe-genes.fr/account/third-party-integration" target="_blank">Services externes</a> ; 

- La capacité de récupérer des scripts d’initialisation dans le language de programmation de votre choix, qui vous permettrons d’accéder au stockage S3 en dehors des services du datalab Onyxia GENES. Disponible dans le sous onglet <a href="https://onyxia.lab.groupe-genes.fr/account/storage" target="_blank">Connexion au stockage</a> (attention, les token fournit dans ces scripts d’initialisation expirent rapidement) ; 
- Récupérer les identifiants Vault afin de pouvoir l’utiliser dans votre terminal, disponible dans le sous onglet <a href="https://onyxia.lab.groupe-genes.fr/account/vault" target="_blank">Vault</a> ; 

## Information du compte 
Dans le sous onglet <a href="https://onyxia.lab.groupe-genes.fr/account/infos" target="_blank">Information du compte</a> vous retrouverez les informations générales de votre compte Datalab Onyxia GENES et la capacité de modifier le mot de passe pour accéder aux différents services déployer dans votre espace : 

 

## Services externes 
Dans le sous onglet <a href="https://onyxia.lab.groupe-genes.fr/account/third-party-integration" target="_blank">Services externes</a> vous pourrez récupérer et modifier les informations des comptes et jetons Gitlab, Github et Kaggle qui seront par défaut, lié à tous les services que vous créerez. Par défaut, votre compte git du genes est paramétré, <a href="https://code.groupe-genes.fr/" target="_blank">accessible ici</a>. 

Nous vous conseillons donc de laisser ces paramètres par défaut, si vous devez utiliser un dépôt git différent (github, bitbucket...) sur un service spécifique, faite la modification lors de la configuration du service dans le <a href="https://onyxia.lab.groupe-genes.fr/catalog/ide" target="_blank">Catalogue de services</a>, vous retrouver un guide complet sur l'ajout d'un <a href="#git" target="_blank">dépôt github & Git du Genes à un service ici</a>: 


![Screenshot](img/image11.png)

## Connexion au stockage 
Dans le sous onglet <a href="https://onyxia.lab.groupe-genes.fr/account/storage" target="_blank">Connexion au stockage</a> vous trouverez toutes les informations de votre <a href="https://minio-console.lab.groupe-genes.fr/browser" target="_blank">stockage S3</a> fournit par le GENES et qui sera automatiquement lié à tous les services du Datalab Onyxia GENES que vous créerez. Dans cet onglet vous trouverez également toutes les informations pour connecter vos ressources externes à votre stockage Onyxia S3. 

!!! warning
    Cependant Attention, tous les tokens de cet onglet expire et se renouvelle automatiquement toutes les 24 heures. Si vous utiliser un token pour connecter des ressources externes a votre stockage S3 Onyxia, bien se rappeler que la durée de vie des tokens est courte (24h par défaut) et qu'il faudra mettre à jour le token d'accès pour vos ressources externes.

**Attention**, concernant l’obtention du Session token S3, il n’est pas affiché dans son entièreté, éviter donc de le copier directement en le sélectionnant puis “copier”. Utiliser bien l'icône “Copier dans le presse-papier" à droite de celui-ci :

![Screenshot](img/image12.png)
 

Vous pourrez également générer un script d’initialisation dans le langage de programmation de votre choix (R, Python, shell, MC client, s3cmd, etc...) qui connectera automatiquement vos ressources à votre stockage Onyxia S3, disponible en bas à gauche via un menu déroulant : 
![Screenshot](img/image13.png)
 
## Vault 
Dans le sous onglet <a href="https://onyxia.lab.groupe-genes.fr/account/vault" target="_blank">Vault</a>, vous aurez la possibilité de copier les variables d’environnement afin de <a href="https://developer.hashicorp.com/vault/docs/commands" target="_blank">configurer votre Vault CLI local</a> : 

![Screenshot](img/image14.png)

!!! warning
    Attention, concernant l’obtention du token Vault, comme pour le token S3, il n’est pas affiché dans son entièreté, éviter donc de le copier directement en le sélectionnant puis “copier”. Utiliser bien l'icône “Copier dans le presse-papier" à droite de celui-ci : 

![Screenshot](img/image15.png)

## Modes d’interfaces 
Dans le sous onglet <a href="https://onyxia.lab.groupe-genes.fr/account/user-interface" target="_blank">Modes d’interfaces</a> vous pourrez modifier le thème d’Onyxia, changer la langue, et activer la fonctionnalités “béta-testeur” qui vous ajoutera les fonctionnalitées d'Onyxia qui ne pas encore complètement operationnel.


# Catalogue de services 
L’onglet <a href="https://onyxia.lab.groupe-genes.fr/catalog/ide" target="_blank">Catalogue de services</a> va vous permettre de lancer, paramétrer et sauvegarder la configuration de vos différents services, qui posséderons plus au moins de sous onglets paramétrables S3, Init, Git etc... qui seront plus détaillé dans la section <a href="#configuration-avancee-du-catalogue-de-services" target="_blank">Configuration avancée du Catalogue de services</a> .  

Pour lancer et paramétrer un service, il suffit de cliquer sur “Lancer”. 

Chaque service son dans différent sous onglet selon leurs catégories (IDE, Databases etc...), par ailleurs sur quasiment chaque pages web d’onyxia, peu importe la page. Vous trouverez en haut, une redirection en lien avec la page sur laquelle vous vous trouvez et qui peut vous fournir des informations/guide additionnel. 

Par exemple dans le Catalogue de services dans la catégorie <a href="https://onyxia.lab.groupe-genes.fr/catalog/ide" target="_blank">Interactive services</a> vous trouverez une redirection vers un <a href="https://github.com/InseeFrLab/helm-charts-interactive-services" target="_blank">dépôt helm</a> qui rassemble la collection des charts helm qu’utilise Onyxia pour déployer les services: 
![Screenshot](img/image16.png)


## Configuration général du catalogue de services 
Dans <a href="https://onyxia.lab.groupe-genes.fr/catalog/ide" target="_blank">Catalogue de services</a> après avoir cliquer sur “lancer” du services que vous souhaitez utiliser, vous pourrez : 
    - Attribué un nom personnalisé au service, une fois le service lancé ou enregistré, celui-ci apparaitra dans l’onglet <a href="https://onyxia.lab.groupe-genes.fr/my-services" target="_blank">Mes services</a>. 
    - Le choix de la version du service. 
    - Sauvegarder l’entièreté de la configuration du service, que vous pourrez redéployer à volonté dans l’onglet <a href="https://onyxia.lab.groupe-genes.fr/my-services" target="_blank">Mes services</a>. 
    - Une extension est cliquable en bas à droite de la page, en parallèle de “Configuration %nom_du_service%”, cela déroulera un menu supplémentaire où vous pourrez configurer beaucoup plus de paramètre qui sont expliqué dans la section suivante <a href="https://code.groupe-genes.fr/DSIT/documentation-dsit/src/branch/main/docs/Services/pole-scientifique/Onyxia/docs/index.md#configuration-g%C3%A9n%C3%A9ral-du-catalogue-de-services" target="_blank">disponible ici</a>. 
    - Copier l’URL de lancement automatique, cela vous permettra de configurer un service, puis d’obtenir une URL que vous pourrez partager avec des collaborateurs. En cliquant sur cette URL, cela déploiera le service que vous avez configurer dans leurs espace onyxia. Cette option est aussi accessible dans l’onglet <a href="https://onyxia.lab.groupe-genes.fr/my-services" target="_blank">Mes services</a>, sur vos services déjà enregistrés. 

Par ailleurs, l’option de la copie URL de lancement automatique ne s’affiche pas avant que vous ayez modifié un paramètre sur le service. L’option “Enregistrer la configuration” s’élargit également lors d’une quelconque modification, sinon c’est une petite icône de sauvegarde situé en haut à droite. 

![Screenshot](img/image17.png)

## Configuration avancée du Catalogue de services 

### S3 
La configuration par défaut est celle de votre <a href="https://minio-console.lab.groupe-genes.fr/browser" target="_blank">stockage S3</a> fournit par le groupe GENES, il vous sera donc possible d'accéder aux fichiers stockés directement dans les services de data science (R, Python, Jupyter...) proposés sur le Datalab, sans avoir besoin de copier les fichiers localement au préalable, ce qui améliore fortement la reproductibilité des analyses. 

Modifier uniquement ces paramètres si vous possédez par exemple un stockage AWS S3 et que vous souhaitez le monter sur un service Onyxia ou que vous avez besoins d’accéder à un stockage S3 GENES autres que celui qui vous a été attribué par défaut. 
![Screenshot](img/image18.png)

Pour apprendre à utiliser cet onglet, voir là <a href="https://documentation-dsit.lab.groupe-genes.fr/Services/pole-scientifique/Onyxia/docs/stockage/" target="_blank">page dédiée</a>. 

### Kubernetes 
Cette option est relativement technique et spécifique, vous ne devriez pas en avoir l’intérêt, hors manipulation direct dans l’environnement Kubernetes. Cependant cette option vous permettra, depuis les différents services que vous avez déployés (pods aux seins de votre namespace Onyxia), de pouvoir effectuer des interactions Kubernetes avec le Master Node et exécuter des commandes kubectl dans un terminal de service (kubectl get pods, kubectl edit deployment etc...). 
Les interactions seront limitées à ce qui est déployé au sein de votre namespace. Vous avez également la possibilité de modifier le rôle Kubernetes attribué aux services, restreignant les actions possibles : view, edit ou admin. 

### Init
Grâce à Init vous allez pouvoir personnaliser les environnements de vos services via des scripts, qui seront exécuté au lancement de votre services, pour automatiser l’installation d’un plugin sur un de vos services IDE ou autres. 

Exemple simple, je souhaite ajouter automatiquement sur mon service onyxia Jupyter un fichier .txt avec comme contenu “Hello World” dans le dossier work/hello-onyxia.txt. 

Pour cela je créé un script onyxia-init.sh, dont le contenu est le suivant : 

```bash
#!/monscript.sh
Echo “Hello World” > work/hello-onyxia.txt
```

!!! warning
    Le script est exécuté en tant que superutilisateur (*Root*) et les fichiers qu'il crée sont ainsi la propriété du superutilisateur.
    Ceci génère des erreurs ensuite quand ces fichiers sont appelés, par exemple des fichiers de configuration de RStudio.
    Pour rendre à l'utilisateur normal (qui s'appelle *onyxia*) les droit sur son dossier personnel :
    ```bash
    chown -R ${USERNAME}:${GROUPNAME} ${HOME}
    ```



Ce script peut être hébergé n’importe où, du moment qu’il possède une URL publique (exemple: <https://git.drees.fr/drees_code_public/ressources/tutos/-/blob/diffusion/contenu/init.sh>) que j’ajoute ensuite dans le Init parameters “PersonalInit” de l’onglet Init: 
![Screenshot](img/image19.png)

**PersonalInit**
Ajouter un lien vers un script shell (enchaînement de commandes linux) qui est exécuté juste après le lancement du service. Pratique pour automatiser la mise en place de certaines configurations. 

 

Ce lien du script doit être accessible sur internet, par exemple sur <https://code.groupe-genes.fr/> ou autres Git avec un projet public.

<a href="https://git.drees.fr/drees_code_public/ressources/tutos/-/blob/diffusion/contenu/init.sh">Exemple de script d'initialisation</a>qui clone un projet à partir d'une instance Gitlab privée, configure les options globales de RStudio, ouvre automatiquement le projet RStudio cloné, installe et sélectionne la correction orthographique française, personnalise les bribes de codes (snippets). 

!!! warning
    Le script est exécuté en tant que superutilisateur (*Root*) et les fichiers qu'il crée sont ainsi la propriété du superutilisateur.
    Ceci génère des erreurs ensuite quand ces fichiers sont appelés, par exemple des fichiers de configuration de RStudio.
    Pour rendre à l'utilisateur normal (qui s'appelle *onyxia*) les droit sur son dossier personnel :
    ```bash
    chown -R ${USERNAME}:${GROUPNAME} ${HOME}
    ```

 
**PersonalInitArgs** 
Des options à passer au script d'initialisation, séparées par des espaces et que l'on peut ensuite appeler avec `$1`, `$2`...

Par exemple si on inscrit dans le champ *PersonalInitArgs* `fichier1.txt fichier2.txt`, et qu'on utilise ce script d'initialisation :

```bash
#!/bin/bash
touch $1
touch $2
``` 

Le script créera via la commande `touch` deux fichiers `fichier1.txt` et `fichier2.txt`.
 

### Resources 
C’est l’endroit où vous allez pouvoir configurer le minimum à maximum de ressource à vos services, pour rappel, vous êtes limités par compte à 5 services, 20 CPU, 50Go RAM et 1 GPU. 

![Screenshot](img/image20.png)

### Networking 
Cette option permet d’ouvrir un port en particulier sur votre service.

![Screenshot](img/image21.png)

### Security 
Permet de restreindre l’accès au différent service, filtrer selon IP.

**Password :**
C'est le mot de passe à saisir lorsqu'on ouvre un service, celui donné par "Copier le mot de passage" sur la page des services. Il est fourni par le paramètre général "Mot de passe pour vos services" que l'on trouve dans "Mon Compte" > "Informations du compte", sauf si on en a défini un particulier au niveau du service. 

**Enable IP protection :**
Si coché, le service n'est accessible que par une seule IP, à décocher si l'on souhaite travailler de deux endroits différents. 

**Enable network policy  :**

### Git 
Par défaut cette option est activée sur chaque service, ce qui va automatiquement configurer Git et effectuer un clone du dépôt au démarrage du service. Il reprend vos paramètres par défault qui ont été spécifié dans votre compte Onyxia, voir <a href="#mon-compte" target="_blank">Mon compte</a>. **Attention**, vous devez renseigner manuellement l’URL du dépôt Git  dans l’option “Repository”. 

![Screenshot](img/image22.png)

**Repository :**
**Attention**, l’option “Repository” est L'URL à renseigner obligatoirement et qui est obtenue sur la plateforme git que vousutilisée (Gitlab, Github...) en cliquant sur "Cloner" > HTTPS: 

Par exemple, pour le Github du GENES qui est paramétré par défaut sur votre compte, cette URL sera obtenu sur le lien <https://code.groupe-genes.fr/aguyot-ensae/test-gitop> puis en cliquant sur l’icône “Copier l’URL”. Vous obtiendrez l’URL <https://code.groupe-genes.fr/aguyot-ensae/test-gitop.git> à renseigner dans l’option “Repository”, ce qui clonera ce dépôt automatiquement sur votre service : 

![Screenshot](img/image23.png)

Exemple sur un service Jupyter où l’URL du dépôt a été renseigné et donc cloné au démarrage : 
![Screenshot](img/image24.png)

**Name :**
Le nom qui apparaîtra dans les commits (pas le nom d'utilisateur du compte Gitlab ou Github). 

**Email :**
L'adresse email qui apparaîtra dans les commits (pas forcément le mail associé au compte Gitlab ou Github). 

**Token :**
Jeton d'accès défini sur la plateforme utilisée (Gitlab, Github...). 

Pour apprendre à utiliser plus en détails cette partie de Git, voir là <a href="https://documentation-dsit.lab.groupe-genes.fr/Services/pole-scientifique/Onyxia/docs/secrets/" target="_blank">page dédiée</a>. 

Il n'est pas possible de cloner automatiquement un projet privé d'une instance privée (c'est-à-dire autre que gitlab.com et github.com). Pour le faire, il faudra recourir à un script shell comme indiqué <a href="#init" target="_blank">plus de détails ici</a>. 

 
### Service 
Ici vous pouvez sélectionner l'image docker qui sera utilisé pour la configuration du service et également en spécifier une custom. Cependant les fonctionnalitées de cet onglet sont actuellement limitées et l'utilisation d'une image custom ne marchera pas, vous avez uniquement le choix de sélectionner des images utilisés par le datalab Onyxia genes dans le menu déroulant **Version**

![Screenshot](img/image31.png)

**PullPolicy**
Politique de déploiement de l'image du service, vous avez le choix entre 3 options:
    - IfNotPresent: le service utilisera l'image sélectionnée dans cet onglet uniquement si l'image par défaut utilisé par onyxia n'est pas récupérable
    - Always: le service utilisera l'image sélectionnée dans cet onglet
    - Never: le service n'utilisera pas l'image sélectionnée dans cet onglet

**Version**
Permet de sélectionner la version d'image qu'utilisera le service, ces images sont les officiels utilisées par le datalab Onyxia Genes

**Custom image**
Permet de spécifié l'utilisation d'une image custom, cependant cette fonctionnalitée est actuellement désactivée.

### Discovery 
Les différentes options du discovery sont activées, elles permettent de détecter si vous avez un service Hive metastore, mlflow ou metaflow de lancer et d’automatiquement les rattacher à votre service. 
![Screenshot](img/image25.png)

### Persistence 
Vous permet de modifier la taille du disque alloué à votre service. 

### Vault 
Pour apprendre à utiliser cet onglet, voir la <a href="https://documentation-dsit.lab.groupe-genes.fr/Services/pole-scientifique/Onyxia/docs/secrets/" target="_blank">page dédiée</a> et <a href="#vault" target="_blank">Vault</a>. 


# Mes services
Dans l'onglet <a href="https://onyxia.lab.groupe-genes.fr/my-services" target="_blank">Mes services</a> vous retrouverez tous vos services en cours, lesquels vous pourrez ré-accéder ou les supprimers.
Vous retrouvez aussi les configurations des services que vous avez enregistrer que vous pourrez relancer, modifier ou partager via URL leurs configuration.
Par exemple dans le cas d'un enseignant, cela lui permettra de configurer un service comme il le souhaite, pour ensuite partager l'URL à ces étudiants, ce qui va leurs permettre de déployer automatiquement dans leurs services un environnement de travail entièrement pré-configurer, stable et reproductible.


Dans l'onglet <a href="https://onyxia.lab.groupe-genes.fr/my-services" target="_blank">"Mes services"</a> de la plateforme Onyxia, vous avez accès à la liste complète de vos services actifs, que vous pouvez ré-ouvrir ou supprimer à votre convenance. De plus, vous pouvez modifier et relancer les configurations enregistrées de services que vous avez sauvegarder et pouvez les relancer, modifier, ou partager via une URL spécifique.

![Screenshot](img/image28.png)

Le partage de l'URL va permettre, par exemple, pour un enseignant, de personnaliser un service selon ses besoins pour un cours, puis de partager l'URL de la configuration avec les étudiants. Ces derniers peuvent ainsi déployer automatiquement un environnement de travail préconfiguré, stable et reproductible dans leurs environnement Onyxia respectifs.

!!! warning
    Penser à supprimer vos services une fois que vous ne les utilisez plus. Un service lancé sur notre infrastructure Onyxia alloue des ressources, et en libérant ces ressources lorsque le service n'est plus nécessaire, vous contribuez à une utilisation plus efficace et responsable de l'infrastructure Onyxia Genes.

## Grafana

Grafana est un outil de surveillance et de visualisation des données qui offre la possibilité de suivre et d'analyser les performances des différents services que vous avez lancés dans votre espace personnel ou groupe projet sur Onyxia.

![Screenshot](img/image29.png)


# Mes secrets
Les variables d’environnement, il arrive que certaines informations doivent être mise à disposition d’un grand nombre d’applications, ou ne doivent pas figurer en clair dans votre code (jetons d’accès, mots de passe, etc.). L’utilisation de variables d’environnement permet de pouvoir accéder à ces informations depuis n’importe quel service.

Pour apprendre à utiliser cet onglet, voir la <a href="https://documentation-dsit.lab.groupe-genes.fr/Services/pole-scientifique/Onyxia/docs/secrets/" target="_blank">page dédiée</a>. 

#  Mes fichiers
La page <a href="https://onyxia.lab.groupe-genes.fr/my-files/aguyot-ensae" target="_blank">Mes fichiers</a> du Datalab prend la forme d'un explorateur de fichiers présentant les différents buckets (dépôts) auxquels l’utilisateur a accès.
Chaque utilisateur dispose par défaut d'un bucket personnel pour stocker ses fichiers, l'interface de stockage S3 est également <a href="https://minio-console.lab.groupe-genes.fr/login" target="_blank">accessible ici</a>.

Il est possible de lire directement vos fichiers depuis cette interface en double cliquant simplement dessus (.mp4, .parquet, .csv etc...), si le format n'est pas lisible depuis l'interface Onyxia, cela vous téléchargement automatiquement le fichier.

Pour apprendre à utiliser cet onglet, voir la <a href="https://documentation-dsit.lab.groupe-genes.fr/Services/pole-scientifique/Onyxia/docs/stockage/" target="_blank">page dédiée</a>. 


# Explorateur de Données
L'explorateur de données vous permet de prévisualisez vos fichiers parquet et CSV directement depuis le navigateur Onyxia, afin d'éviter de devoir passer par un service jupyter ou autres.

Vous pourrez ainsi lire des données qui sont stockées sur votre <a href="https://minio-console.lab.groupe-genes.fr/browser" target="_blank">stockage S3</a> également accessible dans votre onglet <a href="https://onyxia.lab.groupe-genes.fr/my-files" target="_blank">Mes fichiers</a> ou en utilisant une URL publique d'un fichier donnée pour le prévisualiser, ci dessous deux exemples pour importer des données:

**Depuis mon stockage S3**:
Rien de plus simple, si votre fichier est stocké dans <a href="https://onyxia.lab.groupe-genes.fr/my-files" target="_blank">Mes fichiers</a>, il vous suffira de double cliquer directement dessus et celui-ci s'ouvrira automatiquement:    
![Screenshot](img/image32.png)

**Depuis une URL**
Il faut que vous stocker votre fichier et que celui-ci soit partageable via une adresse URL https://, de l'ajouter dans "DATA SOURCE" de l'onglet <a href="https://onyxia.lab.groupe-genes.fr/data-explorer" target="_blank">Explorateur de données</a> et de cliquer sur "LOAD". Par exemple pour le fichier parquet disponible depuis l'URL: https://static.data.gouv.fr/resources/recensement-de-la-population-fichiers-detail-individus-localises-au-canton-ou-ville-2020-1/20231023-122841/fd-indcvi-2020.parquet
![Screenshot](img/image33.png)


