NFV/Edge : Déploiement de Charmed OSM (Open Source MANO) via Juju, MicroStack et MicroK8s …

Image for post
Image for post

anonical a lancé la distribution Charmed OSM (Open Source MANO). OSM est une implémentation open source du stack NFV (Network functions virtualization) MANO (Management and Orchestration) défini par l’Institut Européen des normes de télécommunications ETSI :

Image for post
Image for post

L’initiative NFV pour “Network Functions Virtualization” consiste à virtualiser les services et fonctions réseau. Son objectif consiste à dissocier les fonctions réseau des équipements matériels qui leur sont dédiés tels que routeurs, pare-feu et équilibreurs de charge pour héberger les services qu’elles fournissent sur des machines virtuelles (VM) …

Image for post
Image for post

La distribution Charmed OSM de Canonical ainsi développée fournit aux opérateurs et fournisseurs de services télécoms (TSP) une approche « générique » de la gestion/orchestration de fonctions réseau en tant qu’instances virtualisées. Charmed OSM est une distribution OSM pure upstream.

Test du déploiement de Charmed OSM avec le lancement d’une instance de type Ev3 dans Azure (qui permet la virtualisation imbriquée) :

Image for post
Image for post

Je commence par installer le client Juju et OSM à partir du snap store dans mon instance Ubuntu 18.04 LTS :

sudo snap install juju --classic
sudo snap install osmclient
sudo snap connect osmclient:juju-client-observe
sudo snap connect osmclient:ssh-public-keys
sudo snap connect osmclient:network-control
juju bootstrap localhost osm-lxd
Image for post
Image for post

et je procède à l’installation de MicroK8s. Pour rappel, dans MicroK8s tous les services Kubernetes et les bibliothèques sont regroupés dans une seule image qui peuvent être installés sur 42 distributions Linux, Windows et Mac OS. MicroK8s est utilisé pour héberger son installation d’OSM :

sudo snap install microk8s --classic
sudo usermod -a -G microk8s $USER
newgrp microk8s
microk8s.status --wait-ready
Image for post
Image for post

Une fois terminé, exécution des commandes pour définir les autorisations requises et activer les plugins de stockage et de DNS dans MicroK8s :

microk8s.enable storage dns
Image for post
Image for post

Le cluster Kubernetes est actif et opérationnel. Il est alors possible d’initer le lancement de MicroStack. MicroStack comprend tous les composants clés d’OpenStack à savoir : Keystone, Nova, Neutron, Glance, et évolue extrêmement rapidement. MicroStack sera utilisé ici comme un Virtual Infrastructure Manager (VIM) pour OSM :

Image for post
Image for post
sudo snap install microstack --classic --beta
sudo microstack.init
Image for post
Image for post

Mon installation d’OpenStack est active et opérationnelle :

Image for post
Image for post
Image for post
Image for post

Afin de configurer MicroStack pour qu’il puisse être utilisé comme VIM pour Charmed OSM, j’ajoute une image Ubuntu dans Glance :

Image for post
Image for post

Je peux déployer un autre contrôleur via Juju sur MicroK8s qui accueillera l’installation de Charmed OSM :

Image for post
Image for post

Lancement d’un modèle pour le déploiement d’OSM dans MicroK8s :

Image for post
Image for post

qui induit l’exécution de certaines commandes via un fichier de superposition (vca-overlay.yaml) pour le déploiement de Charmed OSM :

juju add-model osm
juju deploy osm --overlay vca-overlay.yaml
Image for post
Image for post
Image for post
Image for post

lancement du déploiement de Charmed OSM avec Juju :

Image for post
Image for post

Après un certain laps de temps, le déploiement est terminé :

Image for post
Image for post
Image for post
Image for post

On peut alors commencer à interagir avec l’installation de Charmed OSM en utilisant la commande osmclient.osm. On peut également accéder à l’interface web de Charmed OSM :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

Ajout de MicroStack comme VIM à Charmed OSM :

osmclient.osm vim-create --name microstack \
--user admin \
--password keystone \
--auth_url http://<INSTANCE IP>:5000/v3 \
--tenant admin \
--account_type openstack \
--config='{security_groups: default,
keypair: microstack,
project_name: admin,
user_domain_name: default,
region_name: microstack,
insecure: True,
availability_zone: nova,
version: 3,
use_floating_ip: true}'
Image for post
Image for post

Cela devient visible dans le dashboard d’OSM :

Image for post
Image for post

À ce stade, Charmed OSM est déployé dans MicroK8s et MicroStack est configuré comme un VIM. Je peux déployer un service réseau de base comme premier test via un exemple de NSD (Network Service Descriptor) et de VNFD (Virtual Network Function Descriptor) :

Image for post
Image for post
Image for post
Image for post

que je charge dans OSM :

Image for post
Image for post

visualisables dans le détail au sein du dashboard d’OSM :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

Maintenant que les paquets ont été téléchargés, je peux créer un service réseau de base :

osmclient.osm ns-create --ns_name hackfest_basic_ns \
--nsd_name hackfest_basic-ns \
--vim_account microstack \
--config '{
vld: [ { name: mgmtnet, vim-network-name: test } ]
}'
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

Une instance Ubuntu est alors créé pour ce service réseau dans MicroStack :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

Et je peux m’y connecter en SSH :

IP=`microstack.openstack server list -c Networks -f value --name basic | awk '{ print $2 }'`
ssh ubuntu@$IP -i .ssh/id_microstack
Image for post
Image for post
Image for post
Image for post

Autre test avec un service réseau plus complexe via le chargement de ces deux paquets :

wget http://bit.ly/simplecharm_vnfd -O hackfest_simplecharm_vnf.tar.gz
wget http://bit.ly/simplecharm_nsd -O hackfest_simplecharm_ns.tar.gz
osmclient.osm upload-package hackfest_simplecharm_vnf.tar.gz
osmclient.osm upload-package hackfest_simplecharm_ns.tar.gz
Image for post
Image for post

Création de ce nouveau service réseau :

osmclient.osm ns-create --ns_name hackfest_simplecharm_ns \
--nsd_name hackfest_simplecharm-ns \
--vim_account microstack \
--config '{
vld: [ { name: mgmtnet, vim-network-name: test } ]
}'
Image for post
Image for post

qui engendre la création d’une nouvelle instance Ubuntu :

Image for post
Image for post
Image for post
Image for post

L’action disponible dans ce service réseau consiste à créer un fichier à l’intérieur du VNF (fonction réseau virtuelle) au chemin spécifié par le paramètre filename :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

Récapitulatif dans le dashboard d’OSM :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

et exécution de l’action :

osmclient.osm ns-action --action_name touch \
--vnf_name 1 \
--params '{filename: /home/ubuntu/touched}' \
hackfest_simplecharm_ns

et on vérifie son exécution en se connectant par SSH à l’instance Ubuntu créée :

Image for post
Image for post

Charmed OSM fournit du monitoring via Grafana et Prometheus :

Image for post
Image for post
Image for post
Image for post

Ce mode d’installation pourrait peut être convenir en mode Edge Computing mais pour un mode orienté production, on peut utiliser MaaS (Metal as a Service) et les distributions complètes Charmed Openstack et Charmed Kubernetes :

Image for post
Image for post

Canonical fournit en effet une pile de production comprenant:

  • MAAS : pour l’approvisionnement en Bare Metal
  • Charmed Kubernetes : cluster Kubernetes hautement disponible et évolutif à des fins d’hébergement de Charmed OSM
  • Charmed OpenStack : un cluster OpenStack hautement disponible et évolutif qui sera utilisé comme VIM
  • Charmed OSM HA bundle : un cluster MANO Open Source hautement disponible et évolutif

Il faut noter aussi qu’OpenVIM peut se substituer à OpenStack en tant que gestionnaire d’infrastructure NFVI (VIM) pour OSM :

Image for post
Image for post
Image for post
Image for post

Comme d’autres plate-formes (AWS, Azure, VMware vCD, Fog05 …)

A suivre !

Above the clouds, the sky is always blue ...

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store