NFV/Edge : Déploiement de Charmed OSM (Open Source MANO) via Juju, MicroStack et MicroK8s ...
Tags: edgecomputing, kubernetes, azure, openstack
Published: 2020-03-09 00:14:03

---
title: NFV/Edge : Déploiement de Charmed OSM (Open Source MANO) via Juju, MicroStack et MicroK8s ...
published: true
date: 2020-03-09 00:04:45 UTC
tags: edge-computing,kubernetes,azure,openstack
canonical_url: https://medium.com/@abenahmed1/nfv-edge-d%C3%A9ploiement-de-la-distribution-charmed-osm-open-source-mano-via-juju-microstack-et-7b0077b4474d
---

![](https://cdn-images-1.medium.com/max/1024/1*E5HBrOwD41zU-a1CsyOqTQ.jpeg)

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

![](https://cdn-images-1.medium.com/max/600/0*5XXYCLLvVXQECcPE.png)

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) …

[OSM](https://osm.etsi.org/)

![](https://cdn-images-1.medium.com/max/1024/1*YCqG7gmTxW8a9H2ENYJZcA.jpeg)

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) :

![](https://cdn-images-1.medium.com/max/1024/1*TzY7__vJF_-sS_4gWBkxGw.jpeg)

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
```

![](https://cdn-images-1.medium.com/max/1024/1*BkgboFConranlwNO9DQg5g.png)

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
```

![](https://cdn-images-1.medium.com/max/1024/1*2QfPDCFxk0apg0CRi-RlOg.png)

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
```

![](https://cdn-images-1.medium.com/max/1024/1*4iYRcqPQY-EWm5FqkbvvSA.png)

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 :

![](https://cdn-images-1.medium.com/max/1024/1*Ahmw4EwGgeyFq1pTewwHTw.jpeg)

```
sudo snap install microstack --classic --beta
sudo microstack.init
```

![](https://cdn-images-1.medium.com/max/1024/1*CzigmYRZTLwWsE1avD-bSg.png)

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

![](https://cdn-images-1.medium.com/max/1024/1*to_aJC0DeR5VCAtk1sGBBQ.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*NeB7toJLQp-k2jU8xdxGFg.jpeg)

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

![](https://cdn-images-1.medium.com/max/1024/1*mu7v6dsWEvpGLlhTIIT0Bw.png)

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

![](https://cdn-images-1.medium.com/max/1024/1*R33zQhg6hSTQ4UIv5m9BMw.png)

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

![](https://cdn-images-1.medium.com/max/1024/1*hWPVWhPfl83RlconNjG3ng.png)

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
```

![](https://cdn-images-1.medium.com/max/1024/1*hWPVWhPfl83RlconNjG3ng.png)

![](https://cdn-images-1.medium.com/max/1024/1*qav00oj3z69xF_ub-sultA.png)

lancement du déploiement de Charmed OSM avec Juju :

![](https://cdn-images-1.medium.com/max/1024/1*ecTAZU9E6Fiz6hzKpzPfnw.png)

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

![](https://cdn-images-1.medium.com/max/1024/1*815_R1eJaWwcuVmLKGG7jw.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*MSEEhoBQ8PtYi5rMZC87yg.png)

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 :

![](https://cdn-images-1.medium.com/max/1024/1*IX-YLBGOh4nlfZT3tWLo-Q.png)

![](https://cdn-images-1.medium.com/max/1024/1*no5tUsBLXPl14FAe7SS5ew.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*dVM3NdgN4ouyreuj0bWBEg.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*97iGItxRi72Mp0ajV1fDLA.png)

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}'
```

![](https://cdn-images-1.medium.com/max/1024/1*KIlRekqzbzM9qUmu7y9XqQ.png)

Cela devient visible dans le dashboard d’OSM :

![](https://cdn-images-1.medium.com/max/1024/1*CUv9J8mVfWKEVVSZjoDZ0A.jpeg)

À 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) :

![](https://cdn-images-1.medium.com/max/420/1*InNxFV4TlSqmtKbCW8LX3Q.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*5qOR4obUGW1QMZoHqJxd6Q.jpeg)

que je charge dans OSM :

![](https://cdn-images-1.medium.com/max/1024/1*A7M3KFB7mg92U1amgfKgZw.png)

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

![](https://cdn-images-1.medium.com/max/1024/1*Af7HTlpT9n9QvzZeIYvTLg.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*fvalYBjfD9TgqVH_u49m7w.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*ODz_WSrdllVF7BX_SHUqdQ.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*XHsAUHv3DrQWsq6UMbsKUQ.jpeg)

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 }]
                            }'
```

![](https://cdn-images-1.medium.com/max/1024/1*PmQC4qNWUjnhSJwTwvp6eg.png)

![](https://cdn-images-1.medium.com/max/1024/1*3qhchw_-XbQY-sOQMZrYjQ.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*QkCCUJRLMX5hrrIHpHbBgg.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*rtMQYE2YyUexiybwa0SvRQ.jpeg)

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

![](https://cdn-images-1.medium.com/max/1024/1*qQyd_5EIh27O8dzoFWEWiw.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*1rHZd3ffyhf0apbb1KqfHQ.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*8Rtfw8w2tx9N7bdFHujQzQ.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*fWgzO5wr3hKhqCn4hZ4XNQ.jpeg)

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
```

![](https://cdn-images-1.medium.com/max/1024/1*3_q2FEPN_tr99llXtFsa0w.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*4NWjMgxQUKnKd1H6VYy1Fw.jpeg)

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
```

![](https://cdn-images-1.medium.com/max/1024/1*o4CO8A1f4NViNROJLu-iGg.jpeg)

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 }]
                            }'
```

![](https://cdn-images-1.medium.com/max/1024/1*HUm-XmsvcW6ZxwdkxMNWXA.png)

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

![](https://cdn-images-1.medium.com/max/1024/1*iIBiwrEI4RAJWl8RQjUQfg.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*7r41SYVfpWXxe7aIBEvwhg.jpeg)

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 _:

![](https://cdn-images-1.medium.com/max/1024/1*ArrGpjCW-pJ49Poq2Je5Dw.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*WrCZ140qw5drZdpoJmCm1A.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*gbNrSVqnsdjfizXMIH8C6g.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*Ia9eW6fWHyCQm_givnz9zQ.jpeg)

Récapitulatif dans le dashboard d’OSM :

![](https://cdn-images-1.medium.com/max/1024/1*ipaM8vEfHR2YXFg8yvf4gQ.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*jEg0z1u5iDI8a7clUsIaDw.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*4vZmUETjzed4061prgH0mQ.jpeg)

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 :

![](https://cdn-images-1.medium.com/max/1024/1*qd8bV_zqs5OByyWzpXfSWQ.png)

Charmed OSM fournit du monitoring via Grafana et Prometheus :

![](https://cdn-images-1.medium.com/max/1024/1*PQ5RypaO0lt1p--iKB-TbQ.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*oJZ8RaK2Tli8F0UkG94KFw.jpeg)

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 Servie) et les distributions complètes Charmed Openstack et Charmed Kubernetes :

[Charmed OSM, NFV management and orchestration platform](https://charmed-osm.com/)

![](https://cdn-images-1.medium.com/max/1024/1*v_49nuj6409FwQiI6yVh0A.jpeg)

Canonical fournit en effet une pile de production comprenant:

- [MAAS](https://maas.io/) : pour l’approvisionnement en Bare Metal
- [Charmed Kubernetes](https://jaas.ai/kubernetes) : cluster Kubernetes hautement disponible et évolutif à des fins d’hébergement de Charmed OSM
- [Charmed OpenStack](https://jaas.ai/openstack) : un cluster OpenStack hautement disponible et évolutif qui sera utilisé comme VIM
- [Charmed OSM HA bundle](https://jaas.ai/osm-ha/bundle) : un cluster MANO Open Source hautement disponible et évolutif

**Pour aller plus loin**  :

{% youtube xxt0zmE1thQ %}

- [Open source NFV platform for 5G | Ubuntu](https://ubuntu.com/telecommunications)
- [JAAS | Juju as a service](https://jaas.ai/osm/bundle)
- [Quelles différences entre SDN et NFV - Le Monde Informatique](https://www.lemondeinformatique.fr/actualites/lire-quelles-differences-entre-sdn-et-nfv-68784.html)

![](https://cdn-images-1.medium.com/max/632/1*JDkjhipvwvgdDdCP78sJ7w.jpeg)