Incus Self-Service
Concept
Le portail self-service est une plateforme permettant d’accéder à des machines préconfigurées pour des cours ou des expérimentations, avec les caractéristiques suivantes :
- Machine avec durée de vie prédéfinie
- Contrôle de limite par adresse IP
- Basé sur des images créées localement
Origine du projet
Projet original
- Dépôt GitHub : incus-demo-server
- Créateur : Équipe LXC/Incus
Fork personnalisé
- Dépôt GitHub : incus-demo
- Adaptations : Configuration spécifique, images personnalisées
Architecture
Composants principaux
- Frontend Web : Interface utilisateur intuitive
- API Backend : Gestion des requêtes et communication avec Incus
- Base de données : Suivi des ressources et quotas
- Système d’authentification : Intégration LDAP/SSO
Technologies utilisées
- Incus : Gestionnaire de conteneurs
- Python Flask : Backend API
- React : Interface utilisateur
- PostgreSQL : Base de données
- Nginx : Reverse proxy
Fonctionnalités
Gestion des conteneurs
- Création de conteneurs à partir de templates prédéfinis
- Démarrage/arrêt/redémarrage
- Configuration des ressources (CPU, RAM, stockage)
- Snapshots et restauration
Système de quotas
- Limitation du nombre de conteneurs par utilisateur
- Contrôle des ressources allouées
- Monitoring de l’utilisation
Templates disponibles
- Ubuntu 22.04 LTS : Distribution de base
- Debian 12 : Alternative stable
- Alpine Linux : Conteneurs légers
- Development Stack : Environnement de développement pré-configuré
Configuration
Prérequis
# Installation d'Incus
snap install incus --channel=latest/stable
incus admin init
Configuration des templates
# Template Ubuntu 22.04
name: ubuntu-22.04
description: "Ubuntu 22.04 LTS with basic tools"
image: ubuntu:22.04
config:
limits.cpu: "2"
limits.memory: "2GB"
limits.disk: "10GB"
packages:
- curl
- git
- vim
- htop
Déploiement du portail
# Clone du repository
git clone https://git.internal/incus-self-service
cd incus-self-service
# Configuration
cp config.example.yml config.yml
# Éditer config.yml avec vos paramètres
# Déploiement
docker-compose up -d
Sécurité
Isolation réseau
- VLANs dédiés pour chaque environnement
- Firewall automatisé
- Segmentation des accès
Contrôle d’accès
- Authentification obligatoire
- Rôles et permissions granulaires
- Audit des actions utilisateurs
Monitoring
Métriques collectées
- Utilisation des ressources par conteneur
- Temps de démarrage/arrêt
- Erreurs et incidents
- Statistiques d’utilisation
Alertes configurées
- Dépassement de quotas
- Problèmes de performance
- Échecs de déploiement
Retour d’expérience
Avantages observés
- Autonomie des développeurs : Réduction de 80% des tickets de support
- Provisioning rapide : Conteneurs disponibles en moins de 2 minutes
- Standardisation : Templates cohérents et maintenus
Défis rencontrés
- Gestion des quotas : Équilibrage entre flexibilité et contrôle
- Monitoring : Mise en place d’alertes pertinentes
- Formation : Accompagnement des utilisateurs
Évolutions prévues
- Intégration CI/CD
- Templates spécialisés (bases de données, cache)
- API REST complète
- Interface mobile
Ressources
Article mis à jour le 15 janvier 2025