Solution de navigation web isolée, sécurisée et orchestrée via Kubernetes.
Browsermania est une solution de navigation web sécurisée, isolée et orchestrée. Chaque session de navigation est exécutée dans un conteneur dédié, contrôlé via Kubernetes, et accessible à distance via WebRTC. Le projet intègre Cilium pour le cloisonnement réseau et MetalLB pour le load balancing.
- 🔐 Navigation web conteneurisée et isolée
- 🌐 Accès distant via WebRTC
- 🧱 Cloisonnement réseau avec Cilium
- 🚀 Déploiement complet d’une stack backend/frontend
- OS : Ubuntu ou Debian
- Accès root ou sudo
- Outils :
- Minikube ou Kubeadm
- Docker ou Containerd
kubectl- Paquets :
curl,apt-transport-https,ca-certificates,software-properties-common
- Connexion Internet active
git clone https://github.com/sony-level/Browsermania
cd Browsermania
-
configuration via le script d'installation
Vous pouvez utiliser le script bash fourni pour configurer un cluster Kubernetes avec Minikube, et MetalLB.
👉 https://github.com/sony-level/Browsermania/blob/main/buil_with_minikube -
Installation de Minikube
Consultez la documentation officielle :
👉 https://minikube.sigs.k8s.io/docs/start/ -
Démarrage avec Containerd
minikube start --driver=docker --container-runtime=containerd --network-plugin=cni \
--extra-config=kubelet.container-runtime-endpoint=unix:///var/run/containerd/containerd.sock- Installation de Cilium CLI
curl -L --fail --remote-name-all https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum} sha256sum --check cilium-linux-${CLI_ARCH}.tar.gz.sha256sum sudo tar xzvfC cilium-linux-${CLI_ARCH}.tar.gz /usr/local/bin rm cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum}
`4. Installation de Cilium dans Minikube
cilium install- Installation de MetalLB
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.12/config/manifests/metallb-native.yaml
- Configuration de MetalLB
kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)" - Déploiement de Browsermania
kubectl apply -f ./deploy_browsermania.yaml
- Vérification du déploiement
kubectl get pods kubectl get svc
- Installation de Kubeadm, Kubelet et Kubectl
Suivez les instructions officielles :
👉 https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
ou
2. Utilisation du script d'installation
Vous pouvez utiliser le script bash fourni pour configurer un cluster Kubernetes avec containerd, Cilium et Cilium CLI.
👉 https://github.com/sony-level/Browsermania/blob/main/buil_with_kubedm
#!/bin/bash
# Script pour configurer un cluster Kubernetes avec containerd, Cilium et Cilium CLI
# Exécuter sur tous les nœuds
echo "Mise à jour du système et installation des dépendances..."
sudo apt update && sudo apt upgrade -y
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo apt install -y curl apt-transport-https ca-certificates software-properties-common
echo "Activation de l'IP forwarding..."
sudo sysctl -w net.ipv4.ip_forward=1
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
echo "Installation de containerd..."
sudo apt install -y containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
sudo systemctl restart containerd
sudo systemctl enable containerd
echo "Ajout du dépôt Kubernetes..."
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.33/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.33/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
echo "Installation de kubeadm, kubelet et kubectl..."
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
echo "Configuration de kubelet pour utiliser containerd..."
cat <<EOF | sudo tee /etc/default/kubelet
KUBELET_EXTRA_ARGS=--container-runtime-endpoint=unix:///var/run/containerd/containerd.sock
EOF
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable kubelet
sudo systemctl restart kubelet
echo "Installation de Cilium CLI..."
CILIUM_CLI_VERSION=$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/main/stable.txt)
CLI_ARCH=amd64
if [ "$(uname -m)" = "aarch64" ]; then CLI_ARCH=arm64; fi
curl -L --fail --remote-name-all https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum}
sha256sum --check cilium-linux-${CLI_ARCH}.tar.gz.sha256sum
sudo tar xzvfC cilium-linux-${CLI_ARCH}.tar.gz /usr/local/bin
rm cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum}
# Initialisation uniquement sur le nœud maître
if [ "$1" == "master" ]; then
echo "Initialisation du nœud maître Kubernetes..."
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --cri-socket unix:///var/run/containerd/containerd.sock
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
fi
``
Une fois ce script executé et le cluster initialisé, lancer :
```bash
cilium install
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.12/config/manifests/metallb-native.yaml (ou une version plus récente)
kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)"
kubectl apply -f ./deploy_browsermania.yamlPour tester le déploiement, vous pouvez utiliser les commandes suivantes :
kubectl get pods
kubectl get svcℹ️ Important : Les services de type
LoadBalancerdoivent être exposés via MetalLB et accessibles sur l'IP allouée.
Une démonstration vidéo de Browsermania est disponible ici :
👉 Voir la démo
Si vous rencontrez des problèmes, voici quelques étapes de dépannage :
- Vérifiez les logs des pods avec
kubectl logs <pod-name> - Assurez-vous que les services sont correctement exposés avec
kubectl get svc - Vérifiez l'état des pods avec
kubectl get pods -n kube-system - Assurez-vous que Cilium est correctement installé avec
cilium status - Vérifiez la configuration de MetalLB avec
kubectl get configmap -n metallb-system config - Assurez-vous que les ports nécessaires sont ouverts dans votre pare-feu